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

Apereo CAS is now on Develocity

An overview of how Apereo CAS is using Gradle and Develocity to improve its build and test execution cycle.

CAS OAuth/OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the Apereo CAS software acting as an OAuth/OpenID Connect provider.

CAS Groovy Vulnerability Disclosure

Disclosure of a security issue with the Apereo CAS software when using Groovy.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the Apereo CAS software acting as an OpenID Connect Provider.

CAS X.509 Vulnerability Disclosure

Disclosure of a security issue with the CAS software and its X.509 features.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.

CAS Spring Framework RCE Vulnerability Disclosure

Disclosure of the Spring framework RCE security issue with the Apereo CAS software.

CAS OpenID Connect Vulnerability Disclosure

Disclosure of a security issue with the CAS software acting as an OpenID Connect Provider.