Dépendance dans cas/build.gradle:
dependencies { ... compile "org.apereo.cas:cas-server-support-saml:${project.'cas.version'}", compile "org.apereo.cas:cas-server-support-saml-idp:${project.'cas.version'}" ... }
Afin d'utiliser ce protocole, il vous sera nécessaire d'avoir un client SAML2. Vous pouvez utiliser le projet cas-implicit-grant
Configuration minimal de CAS
# SAML IDP # See metadata https://my-cas/cas/idp/metadata cas.authn.samlIdp.entityId=https://my-cas.fr/cas/idp cas.authn.samlIdp.scope=my-cas.fr cas.authn.samlIdp.metadata.location=file:/home/ubuntu/workspace/etc/cas/config/saml
Faites attention que certaines valeurs soit bien renseignées dans le fichier de configuration CAS:
cas.server.name=https://my-cas.fr cas.server.prefix=https://my-cas.fr/cas
Dans le dossier “/home/ubuntu/workspace/etc/cas/config/saml”, des fichiers “crt” and “key” ainsi que le fichier de metadata.xml seront automatiquement générés par CAS.
Cette configuration s'accompagne d'un fichier de service à placer dans cas/src/main/resources/my_services
{ "@class" : "org.apereo.cas.support.saml.services.SamlRegisteredService", "serviceId" : "passport-saml", doit correspondre a l'option "issuer" du client "name" : "SAMLService", "id" : 9996, "evaluationOrder" : 10, "metadataLocation" : "https://my-service.fr/metadata.xml" }
Configuration du client
Dans notre cas nous utilisons un client javascript cas-implicit-grant.
var casUrl = 'https://my-cas.fr/cas'; var loginHost = 'my-service.fr'; var loginUrl = 'https://' + loginHost; // Cette clef doit etre remplacer par une clef provenant du serveur CAS, provenant du champs *<KeyDescriptor use="signing">* var idpCert = 'My-Key'; module.exports = { development: { app: { name: 'Cas test login platform protocol', port: process.env.PORT || 8080 }, passport: { serverBaseURL: loginUrl, casLogoutUrl: casUrl + '/logout', cas2: { confName: 'cas2', ssoBaseURL: casUrl, serverBaseURL: loginUrl }, cas3: { confName: 'cas3', version: 'CAS3.0', ssoBaseURL: casUrl, serverBaseURL: loginUrl }, saml1: { confName: 'saml1', version: 'CAS3.0', ssoBaseURL: casUrl, serverBaseURL: loginUrl, useSaml: true }, saml2: { confName: 'saml', host: loginHost, path: process.env.SAML_PATH || '/assert', // Cette option peut etre remplacer par la methode désirée (voir metadata de CAS), il faudra changer logoutUrl de la même manière entryPoint: process.env.SAML_ENTRY_POINT || casUrl + '/idp/profile/SAML2/Redirect/SSO', issuer: 'passport-saml', doit correspondre a l'option "entity_id" du serveur cert: process.env.SAML_CERT || idpCert, protocol: 'https://', decryptionPvk : idpCert, // disable expiration acceptedClockSkewMs: -1, logoutUrl: casUrl + '/idp/profile/SAML2/Redirect/SLO' } } } };