CAS 6.1.0 RC5 Feature Release


Collaborate
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

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
System Requirements
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 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

× Beware
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.

WATCH OUT!
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.

WATCH OUT!
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

WATCH OUT!
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 configuration
  • cas-server-support-throttle: Authentication Throttling core configuration
  • cas-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 old status endpoint.
  • cas-server-core-events: Authentication Events tracking and configuration
  • cas-server-core-events-configuration: Core configuration and event listeners for rebinding CAS settings for hot reloads.
  • cas-server-core-monitor: Configuration for simple CAS HealthIndicators 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!

Misagh Moayyed

Related Posts

CAS 6.2.0 RC1 Feature Release

...in which I present an overview of CAS 6.2.0 RC1 release.

Apereo CAS - Google reCAPTCHA Integration

Learn to set up an integration between Apereo CAS and Google reCAPTCHA.

Apereo CAS - JMeter Performance Testing

Learn to Performance Test Apereo CAS.

Apereo CAS - OAuth JWT Access Tokens

Learn to customize Apereo CAS to issue OAuth Access Tokens as JWTs.

CAS 6.2.x Deployment - WAR Overlays

Learn how to configure and build your own CAS deployment via the WAR overlay method, get rich quickly, stay healthy indefinitely and respect family and friends in a few very easy steps.

Apereo CAS 6.2.x - Building CAS Feature Modules

An overview of how various CAS features modules today can be changed and tested from the perspective of a CAS contributor working on the codebase itself to handle a feature request, bug fix, etc.

Apereo CAS - Service Redirection Strategies

Learn to customize Apereo CAS to modify the default strategy used for redirecting the authentication flow back to relying parties.

Apereo CAS - Service Matching Strategies

Learn to customize Apereo CAS to modify the default strategy used for matching services.

Apereo CAS - Password Management with JDBC

Learn use the Password Management features in Apereo CAS.

Apereo CAS - Simple Multifactor Authentication

Learn to configure Apereo CAS to act as a simple multifactor provider itself.