layout | title | category |
---|---|---|
default |
CAS - CAS Protocol |
Protocols |
{% include variables.html %}
The CAS protocol is a simple and powerful ticket-based protocol. The complete protocol specification may be found here.
It involves one or many clients and one server. Clients are embedded in CASified applications (called "CAS services") whereas the CAS server is a standalone component:
- The CAS server is responsible for authenticating users and granting accesses to applications
- The CAS clients protect the CAS applications and retrieve the identity of the granted users from the CAS server.
The key concepts are:
- The
TGT
(Ticket Granting Ticket), stored in theTGC
cookie, represents a SSO session for a user. - The
ST
(Service Ticket), transmitted as aGET
parameter in urls, stands for the access granted by the CAS server to the CASified application for a specific user.
The following endpoints are provided by CAS:
{% include_cached actuators.html endpoints="casValidate" casModule="cas-server-support-reports" %}
The following specification versions are recognized and implemented by Apereo CAS.
The current CAS protocol specification is 3.0.3
. The actual protocol
specification is available here, which is hereby implemented by
the Apereo CAS Server as the official reference implementation. It's mainly a capture of the most
common enhancements built on top of the CAS protocol revision 2.0
. Among other features, the most
noticeable update between versions 2.0
and 3.0
is the ability to return the authentication/user
attributes through the new /p3/serviceValidate
endpoint.
The version 2.0
protocol specification is available at CAS-Protocol-Specification.
To enable additional logging, configure the log4j configuration file to add the following levels:
...
<Logger name="PROTOCOL_MESSAGE" level="debug" additivity="false">
<AppenderRef ref="casConsole"/>
<AppenderRef ref="casFile"/>
</Logger>
...

One of the most powerful feature of the CAS protocol is the ability for a CAS service to act as a proxy for another CAS service, transmitting the user identity.

Even if the primary goal of the CAS server is to implement the CAS protocol, other protocols are also supported as extensions:
Using the CAS protocol, the CAS server can also be configured to delegate the authentication to another CAS server.