We’ve just released an Early Access Program (EAP) of Crowd 6.0 so you can get familiar with the upcoming changes. Unless we need to include emergency or unplanned changes, this should be the only EAP for Crowd 6.0.
Highlights
Migration to Java 17: We’ve removed support for JDK 8 and 11. Crowd 6.0 only supports JDK 17.
Removed support for JNDI datasource connection: We’ve removed JNDI as a method for connecting to the database.
Upgrade to Platform 7: We’ve upgraded to Atlassian Data Center Platform 7.
Endpoint default security annotations: By default, endpoints will require an authenticated user instead of allowing public access.
Front-end dependencies SBOM file included in the distribution: With this improvement Crowd becomes compliant with the Secure Software Development Framework.
I hope you’re doing well. We’re facing an issue with the error is internal and is not available for export. If possible, could we kindly request the same level of support the Atlassian team provided when we were working on making the app compatible with Confluence and Jira?
Thank you for your patience, and I apologize for the delay in responding.
For security reasons, we intentionally restricted access to selected packages in Crowd 6.0. However, it appears that restricting access to com.atlassian.config.util was unintended. I understand the impact this may have on your work, and I’m sorry for any inconvenience caused. We plan to include a fix in the upcoming bug fix release scheduled for the next week.
@lokesh It’s more complex for com.atlassian.crowd.manager.authentication package which was blocked for security reasons. Can you please tell us which classes from this package you use and how? We will try to find a solution.
We have the SSO and MFA app for Crowd where we need to authenticate users to create a session. To achieve this, we’re utilizing com.atlassian.crowd.manager.authentication.TokenAuthenticationManager to authenticate the user and generate a session token. We have also tried com.atlassian.crowd.integration.http.CrowdHttpAuthenticator but stuck with the same issue.
@lokesh We decided to expose com.atlassian.crowd.manager.authentication and also mark it as deprecated. The change will be available in the next patch version (6.0.4) and in 6.1+ .
We would like to remove access to this package in Crowd 7.0 and introduce new public API.
Thank you for the update, we really appreciate your assistance.
I wanted to check if there is an estimated release date for Crowd v6.0.4. Having this information would allow us to provide more accurate communication to our customers who are eagerly awaiting updates for our apps.
@MarioAnstoots Several Java packages were removed in version 6.0 for security reasons, including com.atlassian.crowd.console.action and com.atlassian.crowd.service.client. These packages are not planned to be reintroduced in version 6.1.
Here are some recommendations for migrating to version 6.0:
com.atlassian.crowd.console.action
The following service and method can be used to retrieve information about the current user: com.atlassian.sal.api.user.UserManager#getRemoteUser().
com.atlassian.crowd.service.client com.atlassian.crowd.service.client.CrowdClient is no longer exported via OSGi, but it can still be used as a Maven dependency. It is available in Atlassian’s public Maven repository. It is also possible to use other general-purpose REST clients to access the Crowd REST API.
Below is a sample pseudo-code demonstrating how to instantiate a CrowdClient:
import com.atlassian.crowd.integration.rest.service.factory.RestCrowdClientFactory;
import com.atlassian.crowd.service.client.CrowdClient;
....
// Create a new instance of CrowdClient using the factory
RestCrowdClientFactory factory = new RestCrowdClientFactory();
CrowdClient crowdClient = factory.newInstance(
"<crowd-url>", // replace <crowd-url> with the actual URL to Crowd, e.g. https://crowd-inst:8080/crowd,
"<app-name>", // replace <app-name> with the actual application name
"<app-passwd>" // replace <app-passwd> with the actual application password
);
And we use a servlet filter that should filter every (literally every) request, as it checks the authentication. It works for all requests after the login, but not for the original login itself
This probably happens due to a missing security annotation on the servlet filter class. For filters where the location option is set to before-login, you may need to use @UnrestrictedAccess. This document offers information on the topic: Prepare your Data Center app to comply with secure endpoint defaults.
Hi there, thank you again for this. This filter redirects to our servlet at /plugins/servlet/xyz but this gives AccessDenied.
The Servlet already uses @UnrestrictedAccess on doGet and doPost, but it still gives AccessDenied Page and no call on the servlet at all. Any idea on this?
@MarioAnstoots The package com.atlassian.crowd.manager.login, which includes the ForgottenLoginManager class, will be made available for OSGi import starting with version 6.0 in the next patch - v6.0.5.