You are viewing the development documentation for the Apereo CAS server. The
functionality presented
here is not officially released yet.
This is a work in progress and will be continually updated as development moves forward. To view
the documentation for a specific Apereo CAS server release, please choose an appropriate version.
The release schedule is also available here.
Overview
CAS can be integrated with the Shibboleth federated SSO platform by a couple different strategies. It is possible to designate CAS to serve as the authentication provider for the Shibboleth IdP. With such a setup, when user is routed to the IdP, the following may take place:
If the user has already authenticated to CAS and has a valid CAS SSO session, the IdP will transparently perform the requested action, e.g. attribute release.
If the user does not have a valid CAS SSO session, the user will be redirected to CAS and must authenticate before the IDP proceeds with the requested action.
SSO for Shibboleth IdP (RemoteUser)
Configuration
Include CAS Client Libraries in IdP Deployable
Download the latest Java CAS Client Release and modify the IdP war deployable such that the following jars are included in the ./lib installer folder, then redeploy the Idp with these files:
Modify $SHIB_HOME/conf/handler.xml
Define the RemoteUser authentication method to be used with CAS authentication.
Modify IdP Deployable web.xml
Add the following XML blocks to the web.xml file for the IdP war deployable.
Enable RemoteUserHandler in Idp Deployable web.xml
Ensure the following is defined:
SSO for Shibboleth IdP (External)
This is a Shibboleth IdP external authentication plugin that delegates the authentication to CAS. The advantage of using this component over the plain RemoteUser solution is the ability to utilize a full range of native CAS protocol features such as renew and gateway.
The plugin is available for both Shibboleth Identity Provider v2 and v3.
Relying Party EntityId
The authentication plugin is able to pass the relying party’s entity ID over to the CAS server upon authentication requests. The entity ID is passed in form of a url parameter to the CAS server as such:
The CAS server is able to recognize the entityId parameter and display SAML MDUI on the login page,
that is provided by the metadata associated with the relying party. This means that CAS will also need to know
about metadata sources that the identity provider uses.
Configuration
Support is enabled by including the following dependency in the Maven WAR overlay:
Then, adjust cas-servlet.xml with the following:
Metadata sources in the CAS server can be configured via the following ways:
Static
In this case, metadata sources are statically provided via classpath, file or url resources.
Dynamic
In this case, metadata sources are provided via the
Metadata Query Protocol, which
is a REST-like API for requesting and receiving arbitrary metadata. CAS will contact
the metadata server to query for the metadata based on the entityId provided.
Configure Metadata Filters
Metadata filters can be configured to validate and verify the received
metadata in both scenarios. Filters typically check for validity of signaures,
whether validUntil exists, etc. The following example attempts to validate
the signature on the metadata via a pre-configured public key:
You will need to modify your metadata retrieval process, whether static or dynamic,
to adjust for the appropriate metadata filter if need be.
Display MDUI
Modify the login-webflow.xml to execute the SamlMetadataUIParserAction action
when the login form is rendered:
A sample screenshot of the above configuration in action:
Shibboleth Service Provider Proxy
The CASShib project “Shibbolizes” the CAS server and enables end applications to get authentication information from CAS rather than the Shibboleth Service Provider. CASShib is designed as an alternative to deploying the Shibboleth service provider for each application in order to:
Leverage Shibboleth’s sophisticated attribute release policy functionality to enable attribute releasing to services in the local environment.
Offer the chance for local applications to easily become federated services.