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 6.0.0
GA was released on December 28th, 2018. Since then, the project has been moving forward with the development of the next feature release that is tagged as 6.1.0
. Please review the release policy to learn more about the scope of the release. This post intends to highlight some of the improvements and enhancements packed into the fifth release candidate in the 6.1.0
series.
You can read about the previous release candidate here.
- Get Involved
- Resources
- Overlay
- New & Noteworthy
- Redis Authentication
- Password History Tracking
- Scripting Authentication via Groovy
- Attribute Consent via Redis
- MFA Trusted Devices Bypass
- U2F MFA Trusted Devices
- Scripted Attribute Value Filters
- Actuator Endpoint Exposure
- Webflow Error Handling
- U2F Redis Device Registration
- Shared Webapp Resources
- Acceptable Usage Policy via Redis
- JMX Integration
- Fewer Bundled Webapp Modules
- MFA Trusted Devices GeoLocation Fingerprint
- Ticket Registry Expiration Policies
- Other Stuff
- Library Upgrades
- Credits
Get Involved
- Start your CAS deployment today. Try out features and share feedback.
- Better yet, contribute patches.
- Suggest and apply documentation improvements.
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. Note that CAS releases are strictly time-based releases; they are not scheduled or based on specific benchmarks, statistics or completion of features. To gain confidence in a particular release, it is strongly recommended that you start early by experimenting with release candidates and/or follow-up snapshots.
In order to start experimenting with release candidates, 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.
Resources
Overlay
In the gradle.properties
of the overlay, adjust the following setting:
casVersion=6.1.0-RC5
There are no changes to the minimum system/platform requirements for this release.
New & Noteworthy
Redis Authentication
User accounts can now be authenticated against Redis. Likewise, the integration is also allowed to fetch attributes from Redis databases without or without authentication against Redis.
Password History Tracking
Password Management in CAS gains the ability to also track password history and prevent recycling old passwords where appropriate.
Scripting Authentication via Groovy
Designing a new authentication handler can now be done via a Groovy script without having to tap into CAS internal APIs.
Attribute Consent via Redis
Attribute consent decisions can now be tracked and stored inside Redis.
MFA Trusted Devices Bypass
The multifactor trusted device capability gains the ability to specify bypass options per application.
U2F MFA Trusted Devices
The multifactor trusted device capability can now be automatically applied to U2F MFA flows.
Scripted Attribute Value Filters
This may be a breaking change. Please examine your external scripted attribute value filters to make sure the script body matches the structure required by the filter component. You may simply need to write the script around a
run
method with arguments passed as an Object[]
.
Scripted attribute value filters are now pre-compiled and cached to deliver better performance when it comes to parsing and running Groovy scripts.
Additionally, most if not all scripting functionality is revisited to ensure compiled scripts can be cached as efficiently as possible to improve execution performance.
Actuator Endpoint Exposure
Actuator endpoints provided by CAS and/or Spring Boot are now tagged with @ConditionalOnAvailableEndpoint
instead of the now-deprecated @ConditionalOnEnabledEndpoint
,
which makes sure endpoints are both enabled and exposed.
While we do not anticipate this to be a breaking change for CAS overlays, you do need to make sure the endpoints that are enabled are also exposed either via web or jmx before they can be functional.
Webflow Error Handling
Handling of webflow exceptions and errors is now generalized into implementations of CasWebflowExceptionHandler
to allow
modules in CAS and custom code outside CAS maximum flexibility when it comes to modifying error messages or handling exceptions.
U2F Redis Device Registration
FIDO U2F devices can now be stored inside a Redis database/cluster.
Shared Webapp Resources
Shared web application resources such as configuration files and HTML views are now moved into a separate CAS module cas-server-webapp-resources
.
This should not require a change to how the overlay works. If the resources are in a jar then they can still be overridden by resources in the webapp’s
WEB-INF\classes
folder (i.e. src\main\resources
of the overlay). This is possible because WEB-INF\classes
is first in classpath before WEB-INF\lib*.jar
.
The CAS overlay is also modified to comply with this change, when asked to fetch resources from the exploded CAS web application.
While we do not anticipate this to be a breaking change for CAS overlays, you do need to make sure the overlay is updated to match and include the provided task definitions that recognize the new module.
Acceptable Usage Policy via Redis
Acceptable Usage Policy decisions can now tracked and stored inside Redis.
JMX Integration
A number of CAS components can be registered and exposed over JMX to provide remote insight into the running CAS software.
Fewer Bundled Webapp Modules
This might be a breaking change. Consult the CAS documentation to verify details.
The following CAS feature modules are extracted and moved out of the default CAS web application bundle to reduce configuration overhead and improve startup time. You will need to expressly list them in your CAS overlay build script to activate the feature:
cas-server-support-pm-webflow
: Password Management Webflow configurationcas-server-support-throttle
: Authentication Throttling core configurationcas-server-support-geolocation
: Geolocation Core configuration; generally pulled in automatically depending on the method of geotracking.cas-server-support-reports
: CAS Actuator endpoints backed by Spring Boot; must be pulled in if you rely on the oldstatus
endpoint.cas-server-core-events
: Authentication Events tracking and configurationcas-server-core-events-configuration
: Core configuration and event listeners for rebinding CAS settings for hot reloads.cas-server-core-monitor
: Configuration for simple CASHealthIndicator
s on memory and ticket state.cas-server-core-configuration-metadata-repository
: CAS configuration metadata endpoint and repository.
MFA Trusted Devices GeoLocation Fingerprint
Device fingerprints may now also be calculated using geolocation data provided by browser, when working with the multifactor trusted device feature.
Ticket Registry Expiration Policies
Core refinements are made internally to the construction of ticket registry expiration policy components to allow values to become refreshable via @RefreshScope
without interfering with object serialization with cache-based ticket registries such as Memcached, Hazelcast, etc.
Other Stuff
- Cassandra as a ticket registry is improved to take advantage of distinct tables for ticket types per the CAS ticket catalog.
- Principal transformation via Groovy can now detect and load changes to the external Groovy script automatically.
- LDAP search queries can now process paged responses, instructed by CAS configuration, to fully obtain LDAP results from a query.
- Minor fixes to properties and relevant documentation for typos, etc.
- Incremental and performance improvements to MongoDb acting as a service registry and a ticket registry.
- Minor fixes to Passwordless AuthN in terms of error handling and webflow navigation.
- Dynamic Spring Webflow Configurers are now made into conditional beans to provider an easier channel for overrides.
- The
cas-server-support-validation
module is broken apart separate auto-configuration from core components. - Delegated authentication to SAML2 identity providers gains the ability to specify signed authentication requests, multiple context classes, etc.
Library Upgrades
- BounctCastle
- Amazon SDK
- Gradle
- Apache Tomcat
- Spring Boot
- Nexmo
- Hazelcast
- Spring
- Spring Integration
- Spring Security
- Log4j
- Infinispan
- MariaDb Driver
- Pac4j
- Guava
- FontAwesome
- Nimbus
- Apache Ignite
Credits
Big thanks to all who participate in the development of this release to submit patches and contribute improvements. Keep’em coming!