The blog is managed and hosted on GitHub. If you wish to update the contents of this post or if you have found an inaccuracy and wish to make corrections, we recommend that you please submit a pull request to this repository.
The official CAS
5.2.0 GA was released on November 27th, 2017. Since then,
the project has been moving forward with development of the next feature release
that is tagged as
5.3.0. This post intends to highlight some of the improvements
and enhancements packed into the second release candidate in the
You can read about the previous release candidate here.
- Shake Well Before Use
- Hazelcast Discovery
- Apache Syncope Authentication
- Operation Lombok
- HTTP Security Headers per Service
- Registered Services REST API
- Configuration Discovery
- SAML2 Service Providers
- JSON Whitelist Authentication
- REST Protocol Credential Extraction
- AWS Credential Fetching
- Mapped Attribute Value Filters
- Authenticate Credentials via REST Protocol
- REST Protocol Enhancements
- REST-based Audits
- SAML2 Attribute Friendly Names
- Configuration Binding Behavior
- New Command-line Shell Commands
- SAML2 Audits
- OAuth2 Audits
- REST API Audits
- Audit Trail Management
- Authentication Throttling
- MongoDb Authentication Throttling
- Library Upgrades
- Get Involved
- Das Ende
Shake Well Before Use
We strongly recommend that you take advantage of the release candidates as they come out. Waiting for a
GA release is only going to set you up for unpleasant surprises. A
GA is simply a tag and nothing more. In order to start experimenting with release candidates, use the following strategies.
At any given time, you should be able to append
-SNAPSHOT to the CAS version specified in order to take advantage of snapshot builds as changes are made and published.
pom.xml of the overlay, adjust the following tag to match below:
gradle.properties of the overlay, adjust the following setting to match below:
- The embedded Apache Tomcat container is now given the ability to support basic authentication.
- Caching attributes fetched from external attribute repositories is now corrected to handle caching more efficiently.
- Thanks to @leleuj, MFA bypass via REST is corrected to format parameters properly for the REST request.
- Thanks to @alexdp, the Apache Ignite cache is corrected to include the right cache names for proxy tickets.
- Thanks to @rrenomeron, better error handling is put into place while parsing YAML property files.
- Thanks to @leleuj, better error handling is put in place for email notifications specially when no principal attribute is found to indicate the target email address.
- The DynamoDb table name used to hold CAS’ registered service definitions can now be customized via CAS settings.
- The logout webflow/view is now able to correctly recognize and activate the required code snippet for Google Analytics.
- Thanks to @marqc,the condition that controls the issuing of ticket-granting tickets is improved to take into account identical usernames found in multiple account sources.
- Thanks to @johnlister, better error handling is put in place during the password management reset flows when an invalid username is provided.
- Thanks to @plajko, ordering of the authentication handlers selected for the current transaction is correctly enforced.
- Thanks to @deel77, the Slovak language bundles are updated.
- Thanks to @3cdota,delegated authentication using Pac4j will attempt to preserve the requested URL upon CAS logout.
- Thanks to @dima767, the ranking logic that affected variegated multifactor providers such as Duo Security is now corrected.
- Thanks to @tienthanh2509, a new language pack for Vietnamese is now included in CAS.
- The LDAP service registry is able to correctly import JSON definition files where specified.
- Thanks to @dacurry-tns, handling of MongoDb connection strings specified by client URIs is now improved.
- Thanks to @arbner, consent view pages now have access to the authenticated principal.
- Thanks to @alexdp, Google Apps integration in CAS is improved to properly load the given certificates.
- Thanks to @hdeadman, the SSL valve for the embedded Apache Tomcat is now correctly registered with the servlet container.
- Thanks to @dima767, the log viewer available as part of the CAS dashboard gets a number of performance improvements internally.
- Thanks to @fjollberg, authenticating to Couchbase buckets receives a number of bug fixes.
- Thanks to @plajko, a number of MongoDb performance and configuration improvements are included in this release candidate. Additionally, the default size of the embedded Apache Tomcat’s thread pool is now increased.
- Thanks to @plajko, JWT ids generated with CAS as OpenId Connect OP are set to the service ticket identifier to account for proper session mapping when dealing with SLO.
- Minor bug fix in the way attributes are resolved and fetched from REST endpoints.
CAS is now able to leverage Apache jclouds and Microsoft Azure, when it comes to Hazelcast and auto-discovery.
Apache Syncope Authentication
As yet another method of authentication, CAS is now able to leverage Apache Syncope to locate user accounts.
CAS begins to adopt Project Lombok in order to reduce noise and boilerplate code used to obtain logger objects, generate getter/setter methods, etc. This is part of a bigger gradual step at possibly converting the codebase relevant modules over to Kotlin to further improve readability and reduce LOC.
Before the migration, total number of lines for Java classes stood at
207,002. Today, after the migration the number of lines is reduced down to
HTTP Security Headers per Service
Injection of HTTP security headers into the response can now be controlled on a per-service basis. See this guide for more info.
Registered Services REST API
For some time, CAS has had support for a REST-like API allowing one to add service definitions into the registry. This API was quite limited in accepting different properties of a given service definition or different types of services for various protocols. In this release candidate, this API is improved slightly to accept all types of service definitions in the API request body and making it slightly easier to execute such requests with proper authentication and authorization enforcements.
This is a breaking change. Please revisit the API requests and reformulate them accordingly.
The Configuration Discovery endpoint in CAS is now able to report back configured and supported clients used in the context of delegated authentication.
SAML2 Service Providers
The following new SAML2 service providers are now supported by CAS out of the box:
JSON Whitelist Authentication
A JSON-based authentication strategy is now included that allows one to mimic user account details, mostly useful for development and testing.
REST Protocol Credential Extraction
The CAS REST protocol in this release candidate is given the ability to extract multiple sets of credentials from the request body and prep them for authentication. In practice this means that various modules, such as YubiKey and Google Authenticator, may be allowed to insert a special credential extractor into the REST engine automatically when detected in order to let the REST request achieve MFA.
AWS Credential Fetching
For components that tightly integrate with AWS such as Cloud Directory Authentication or CloudWatch, etc CAS is now given the ability to fetch credentials from a variety of sources as part of an ordered chain. Sources include system properties, environment variables, EC2 instance metadata, etc.
This is a breaking change. As part of this change, a number of module names for CloudWatch logging, etc have changed their names to belong to the
supportcategory of CAS modules rather than
core. Review the documentation and adjust accordingly.
Mapped Attribute Value Filters
A new attribute value filter is added whose main ability is to filter attribute values by a collection of patterns and then supplant the value dynamically based on the results of the regex match.
Authenticate Credentials via REST Protocol
A new REST endpoint is now exposed that is tasked to only verify the validity of the provided credentials without dealing with the ticket API.
REST Protocol Enhancements
The CAS REST protocol is now enhanced internally to be able to accept other types of protocols and parameters in order to issue a response (i.e. service ticket). As a first candidate, the REST protocol is now able to issue SAML1 tickets just as well as the normal web-based SSO flows.
CAS audit data and logs may now be POSTed to a REST endpoint of your choosing.
SAML2 Attribute Friendly Names
CAS acting as a SAML2 identity provider is given the ability to individually configure friendly names for attributes released to service providers.
Configuration Binding Behavior
Starting with this release candidate, the configuration binding operations start to be a bit less forgiving when it comes to detecting unknown CAS settings found in property sources such as the
cas.properties file. If you have existing settings that are no longer accepted or recognized, CAS will present you with an error at runtime and on startup forcing you clean up the configuration and find the correct replacements where relevant.
As part of this change, please note that the following settings that deal with CAS standalone configuration resolution have been renamed:
This is done to ensure configuration settings recognized by CAS are kept up-to-date, accurate and relevant throughout upgrades. As yet another reminder, it is unnecessary to copy an entire collection of CAS settings and values into property sources without fully knowing their application and impact. Per the usual recommendation, you are to keep the entire overlay construct clean, precise and laser-focused on behavior you do in fact need.
New Command-line Shell Commands
The CAS command-line shell is now given the following capabilities:
- Export database schemas and DDLs
- Generate SAML IdP metadata and related keystores and certificates
- Jasypt-related commands to test available cipher algorithms and providers used to secure CAS properties, thanks to @hdeadman.
SAML2 requests and responses accepted and produced by CAS while running as a SAML2 identity provider are now routed to the audit log. As part of this change, the auditing functionality in CAS is slightly improved to allow for dynamic registration of audit action and resource resolution events that may be carried out by any CAS module at runtime and typically on startup.
OAuth2 user profiles produced by CAS while running as an OAuth2 identity provider are now routed to the audit log.
REST API Audits
Interactions with the CAS REST API that would allow one to obtain ticket-granting tickets and/or service tickets are now also sent to the audit log.
Audit Trail Management
Audit record management in CAS is given the abllity to work with multiple managers, storing audit data in many destinations at the same time. The auditing library is also given the ablity to fetch audit data based on a starting date whose value may be controlled in CAS settings.
As part of this change, a number of settings that specifically controlled the behavior of audit functionality based on log files and Slf4j have changed location, moving over to a
slf4jcategory. Review the documentation for all settings and adjust accordingly if you have included any of those settings in your property sources.
Authentication throttling configuration is slightly simplified to skip creating NoOp throttlers when throttling is disabled. As part of this change, other components that take advantage of throttling such as REST and OAuth protocols are affected to use the same throttler and configuration that would is used for other areas of the system namely the usual login endpoints.
As part of this change, the
throttlersetting that REST and OAuth module settings carried is now removed in favor of the default throttler functionality.
MongoDb Authentication Throttling
- Spring Webflow
- Commons Pool
- Spring Boot
- Apache Tomcat
- Person Directory
- Apache HttpClient
- Java CAS Client (version
3.5.0is now available)
- Start your CAS deployment today. Try out features and share feedback.
- Better yet, contribute patches.
- Suggest and apply documentation improvements.
Big thanks to all who participate in the development of this release to submit patches and contribute improvements. Keep’em coming!