mirror of https://github.com/jacekkow/keycloak-protocol-cas

Jacek Kowalski
2023-11-24 fcbc7c31990c50d1dde8c676a901d00421d73d08
commit | author | age
0cc9a0 1 # keycloak-protocol-cas
MP 2
5dc37d 3 This plugin for Keycloak Identity and Access Management (http://www.keycloak.org) adds the CAS 3.0 SSO protocol
JK 4 as an available client protocol to the Keycloak system. It implements the required Service Provider Interfaces (SPIs)
5 for a Login Protocol and will be picked up and made available by Keycloak automatically once installed.
6
7 ![Build status](https://github.com/jacekkow/keycloak-protocol-cas/workflows/Release/badge.svg)
b8c874 8
1482f2 9 ## Features
5dc37d 10
0cc9a0 11 The following CAS features are currently implemented:
MP 12 * CAS 1.0/2.0/3.0 compliant Login/Logout and Service Ticket Validation
b8c874 13 * Single Logout (SLO)
0cc9a0 14 * Filtering of provided `service` against configured redirect URIs
MP 15 * JSON and XML response types
16 * Mapping of custom user attributes to CAS assertion attributes
17
5dc37d 18 The following features are **missing**:
JK 19 * SAML request/response [CAS 3.0 - optional]
20 * Proxy ticket service and proxy ticket validation [CAS 2.0]
4e2fd6 21
D 22 The following features are out of scope:
0cc9a0 23 * Long-Term Tickets - Remember-Me [CAS 3.0 - optional]
MP 24
3f0be1 25 ## Compatibility
ea64d6 26
5dc37d 27 The CAS plugin has been tested against the same Keycloak version as the plugin version.
JK 28
29 As a rule of thumb plugin version should **match your Keycloak version**.
3f0be1 30
D 31 ## Installation
5dc37d 32
de93e7 33 Quarkus is the default distribution method of Keycloak 17.0.0 and newer. For legacy installations using WildFly, please refer to the [old README](https://github.com/jacekkow/keycloak-protocol-cas/blob/16.1.1/README.md).
ea64d6 34
5dc37d 35 1. Download the latest release compatible with your Keycloak version from the [releases page](https://github.com/jacekkow/keycloak-protocol-cas/releases).
de93e7 36 2. Put the downloaded JAR file into the `providers/` directory inside Keycloak installation folder.
JK 37 3. Stop the Keycloak server.
38 4. (Re-)build the installation using `kc.sh build` command.
39 5. Start the Keycloak: `kc.sh start`
5dc37d 40
JK 41 Remember to update plugin artifact with each Keycloak server upgrade!
0cc9a0 42
1482f2 43 ## Configuration
5dc37d 44
JK 45 To use the new protocol, you have to create a client within Keycloak as usual, selecting `cas` as protocol.
46 As there is no client ID indication in protocol, the client will be identified by the redirect URIs
47 configured in Keycloak.
0cc9a0 48
de93e7 49 Enter `https://your.keycloak.host/realms/master/protocol/cas` as the CAS URL into your SP.
222474 50 This assumes that you use the default `master` realm - if not, modify the URL accordingly.
JK 51
52 Note that some client implementations require you to enter login and validate URLs, not CAS URL!
53 This manifests with "Page Not Found" error on login attempt
54 (see [issue #27](https://github.com/jacekkow/keycloak-protocol-cas/issues/27) for example).
55 In such case append `/login` to the CAS URL to get the "login URL".
56 Similarly append `/serviceValidate` to get the "validate URL".
0cc9a0 57
1482f2 58 ## Disclaimer
5dc37d 59
JK 60 This plugin was implemented from scratch to comply to the official CAS protocol specification,
61 and is based heavily on the OpenID Connect implementation in Keycloak.
0cc9a0 62 It is licensed under the Apache License 2.0.
MP 63
5dc37d 64 This repo is a fork of https://github.com/Doccrazy/keycloak-protocol-cas
JK 65 and includes changes for Keycloak 8 and newer that were not merged by the owner for half a year.
66
1482f2 67 ## References
222474 68
JK 69 [1] https://www.keycloak.org/
5dc37d 70 [2] https://issues.jboss.org/browse/KEYCLOAK-1047 (Support CAS 2.0 SSO protocol)
JK 71 [3] https://apereo.github.io/cas/4.2.x/protocol/CAS-Protocol-Specification.html
0cc9a0 72 [4] https://keycloak.gitbooks.io/server-developer-guide/content/topics/providers.html