Preparing for Crowd 7.0
This documentation is intended for Crowd developers who want to ensure that their existing apps are compatible with Crowd 7.0.
On this page:
- Upgrade to Struts 7.0
- Removed support for Freemarker templates
- Added support for Apache Velocity and Soy templates
- New plugin modules
- Migration of insecure password encoders
- Security and usability updates
- Updated Tomcat protocols
- Added support for Oracle 23ai and removed bundled Oracle JDBC driver
- Removed support for databases
- Removed support for Java 17
- Struts security updates
- Removal of insecure and deprecated components
- OAuth 2.0 and service accounts
- Added support for Postgres and MySQL
- Changes to the Restore Crowd feature
- Deprecating user and group attribute sync
- Disable scheduled backups by default
- Migrate to new authentication API
Quick info
Here you can find information about the latest EAP.
Date | EAP number | Downloads |
---|---|---|
| 7.0.0-EAP03 (EAP 03) |
Summary of changes
In this section we'll provide an overview of the changes we intend to make, so you can start thinking how it might impact your apps. Once they're ready, we'll indicate when a change has been implemented.
In Crowd 7.0.0, we introduce new functionalities and features without any expected breaking changes.
Upgrade to Struts 7.0
Status: IMPLEMENTED (EAP 02)
We’re upgrading to Struts 7.0 which comes with new features and significantly enhances security. This update addresses critical vulnerabilities and incorporates the latest security measures, providing you with a safer and more reliable experience.
In addition to the Servlet API changes mentioned earlier, the primary change is the renaming of the com.opensymphony.xwork2
package to org.apache.struts2
. Take care to replace all such imports.
In EAP01, we released an intermediate version with Struts 6.6, with EAP02 we completed migration to Struts 7.0
Removed support for Freemarker templates
Status: IMPLEMENTED (EAP 01)
We’re removing support for Freemarker templates to ensure a safer environment. We encourage you to update your apps to use alternative templating technologies, such as Soy or Apache Velocity templates, which will be supported in the new release.
Added support for Apache Velocity and Soy templates
Status: IMPLEMENTED (EAP 01)
We’re introducing support for Apache Velocity and Soy templates, offering you new server-side templating options with enhanced security for rendering dynamic content.
New plugin modules
Status: IMPLEMENTED (EAP 01)
The Struts module
The Struts plugin module replaces the xwork
module which is deprecated starting from Crowd 7.0 and will be removed in Crowd 8.0. Learn more about the new Struts module
The Velocity Allowlist module
The Velocity Allowlist module allows app developers to allowlist their plugin class methods for invocation from Velocity templates. Learn more about the Velocity Allowlist module
Migration of insecure password encoders
Status: IN PROGRESS (EAP 01)
Internal directories in Crowd can be configured to utilize encryption for user passwords. This setting ensures that Crowd applies a one-way hash function to user passwords before processing them, making it impossible to decrypt later:
- When a user is created or his password is updated, the password is encrypted prior to being stored within the database.
- When a user enters their credentials on login, the password is encrypted prior to being compared with the stored value.
Crowd still supports the following password encoders, which are deemed insecure:
- PLAINTEXT
- MD5
- SHA
- SSHA
In Crowd 7.0, we're introducing tools to facilitate the migration of directories using insecure password encoders to secure alternatives. Upon their next login, each user's password will be re-hashed with a secure encoder.
This transition means that, for a period, the directory will contain user passwords encrypted with two different encoders. Our goal is to provide a seamless experience for the end user, however, some manual intervention may be necessary from the Crowd administrator, such as removing inactive accounts.
Security and usability updates
Status: IMPLEMENTED (EAP 02)
We’ve implemented several updates shared across all Atlassian Data Center products, including the adoption of Jakarta and upgrading major versions of underlying technologies used in Atlassian products. This upgrade can be split into two parts:
Backend
- Spring updated to version 6
- Tomcat updated to version 10
- Ehcache updated to version 3
- Atlassian Central Visibility plugin updated to version 3
More details about the backend updates
Frontend
Updated Tomcat protocols
Status: IMPLEMENTED (EAP 02)
We’ve updated the protocols provided by Crowd extending the Tomcat protocols with support for password encryption:
Crowd protocol | Based on Tomcat protocol | Supported attributes for password encryption |
---|---|---|
com.atlassian.secrets.tomcat.protocol.Http11NioProtocolWithPasswordEncryption | Http11NioProtocol |
|
com.atlassian.secrets.tomcat.protocol.Http11Nio2ProtocolWithPasswordEncryption | Http11Nio2Protocol |
|
com.atlassian.secrets.tomcat.protocol.AjpNioProtocolWithPasswordEncryption | AjpNioProtocol |
|
com.atlassian.secrets.tomcat.protocol.AjpNio2ProtocolWithPasswordEncryption | AjpNio2Protocol |
|
The APR/Native library and the APR/Native connectors (specifically, Http11AprProtocol and AjpAprProtocol) are deprecated in Tomcat 10 and will be removed in Tomcat 10.1.x.
This means the com.atlassian.secrets.tomcat.protocol.AjpAprProtocolWithPasswordEncryption and the com.atlassian.secrets.tomcat.protocol.Http11AprProtocolWithPasswordEncryption protocol will no longer be supported in Crowd 7.0.
Added support for Oracle 23ai and removed bundled Oracle JDBC driver
Status: IMPLEMENTED (EAP 02)
We’ve added support for the Oracle 23ai database, apart from the already supported version 19. Since these two databases require different Oracle JDBC variants, we've removed the Oracle JDBC driver from the bundled drivers. This means you need to add the Oracle JDBC driver .jar
in tomcat/lib
based on the Oracle database:
Oracle 23ai: https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc17/23.7.0.25.01
Oracle 19: https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8/23.7.0.25.01
Removed support for databases
Status: IMPLEMENTED (EAP 02)
We’re removing support for:
Oracle 12
Postgres 10
Postgres 11
Postgres 12
Postgres 13
Postgres 14
MySQL 5.7
MySQL 8.0 LTS
SQL Server 2016
SQL Server 2017
Removed support for Java 17
Status: IN PROGRESS (EAP 02)
We’re removing support for:
Java 17
Struts security updates
Status: IMPLEMENTED (EAP 02)
We’ve introduced changes for improved security in Struts:
The exclusion of class
org.apache.struts2.ActionContext
instruts.excludedClasses
The exclusion of OGNL expression node types:
ognl.ASTBitAnd
ognl.ASTBitOr
ognl.ASTNegate
Removal of insecure and deprecated components
Status: IMPLEMENTED (EAP 02)
We’ve updated some outdated and insecure external components:
com.sun.activation
andcom.sun.mail
were migrated fromcom.sun
toorg.eclipse.angus
We’ve also removed some components which have been deprecated in the past:
Component | Removed |
---|---|
Crowd Core | class |
public static methods and fields in
| |
class | |
class | |
Crowd API |
|
public methods
|
OAuth 2.0 and service accounts
Status: IN PROGRESS (EAP 02)
We’re introducing the ability to use OAuth 2.0 to connect an application to Crowd and synchronize users, groups, and memberships. With this change, basic authentication will be disabled by default for newly created Crowd instances. This is a first step towards the removal of basic authentication altogether as we develop and mature alternatives to support the remaining few use cases.
Furthermore, we’re adding support for managing service accounts which are special accounts used by applications or services to interact with other systems or APIs, often without human intervention. Service accounts facilitate secure interactions between applications and Crowd and ensure that applications can authenticate and synchronize users, groups, and memberships securely, without relying on traditional username and password combinations (basic authentication). By managing service accounts, admins can control how applications access and interact with Crowd, enhancing security and efficiency in user management processes.
Added support for Postgres and MySQL
Status: IMPLEMENTED (EAP 03)
We’re adding support for:
Postgres 17
MySQL 8.4
Changes to the Restore Crowd feature
Status: IMPLEMENTED (EAP 03)
Restoring Crowd using an XML file requires only the file name now. The file must be located in the crowd-home/import
directory. Before starting the restoration, the admin needs to copy the XML file to the crowd-home/import
directory and then input just the file name in the UI.
This process aligns with the Import-Users feature.
Deprecating user and group attribute sync
Status: IN PROGRESS (EAP 03)
We’re deprecating the functionality of synchronizing user and group attributes from external directories. This was an undocumented feature which synchronized user and group attributes with a certain prefix from external directory. The functionality was disabled by default unless activated by manually editing the directory attributes.
When enabled, an error message will be logged at the error level from the com.atlassian.crowd.directory.synchronisation.cache.AbstractCacheRefresher
logger. The message will state either:
- "User attribute synchronization is enabled. This functionality is deprecated and will be removed in a future Crowd version", or
- "Group attribute synchronization is enabled. This functionality is deprecated and will be removed in a future Crowd version."
Currently, there is no planned replacement for this feature.
Disable scheduled backups by default
Status: IMPLEMENTED (EAP 03)
In this Crowd version, scheduled backups are turned off by default. When upgrading from a previous version of Crowd or restoring from a backup, your existing backup configuration will remain unchanged. This means your current settings will be preserved as they're previously configured.
Migrate to new authentication API
Status: IMPLEMENTED (EAP 03)
We’re deprecating com.atlassian.crowd.manager.authentication.TokenAuthenticationManager
. It’ll be added to the list of deprecated API in the upcoming Crowd 6.3.2 release and will be completely removed with the release of Crowd 7.0.
As a more secure alternative, use com.atlassian.crowd.service.authentication.CrowdApplicationAuthenticationService
to authenticate and logout users to Crowd. This service also supports audit log entries for better visibility of these operations.
Other functionalities provided by TokenAuthenticationManager
will no longer be exposed by Crowd’s public API.