Integrar Exchange 2019 con Apereo CAS mediante ADFS (Parte 4)
Hoy llegamos a la parte 4 donde explicaremos la configuración de la parte de Apereo CAS. En nuestro caso hemos utilizado, como habíamos comentando anteriormente, el CAS Overlay porque simplica el trabajo de configuración y despliegue del Apereo CAS. Suponiendo que hayas descargado la última versión desde GitHub, vamos a tocar los siguientes ficheros:
- /etc/cas/config/cas.properties.
- /etc/cas/services/cas_saml-100.json.
- /etc/cas/services/adfs-101.json.
- /etc/cas/metadata/adfs-metadata.xml.
Antes de comenzar
En el fichero build.gradle del CAS Overlay se han añadido las implementaciones de IDP, JSON Service Registry y LDAP. Posteriormente hemos ejecutado el comando ./gradlew clean build
para crear el fichero WAR que usaremos. Para ejecutar el CAS hemos usado el comando java -jar build/lib/cas.war
También tendremos que crear un usuario que nos permita autenticar contra Directorio Activo para poder obtener la información de los usuarios. En el caso de este laboratorio el usuario creado es “APEREO USER”.
Fichero /etc/cas/config/cas.properties
as.server.name=https://apereolab.olimpo.lab:8443
cas.server.prefix=${cas.server.name}/cas
logging.config=file:/etc/cas/config/log4j2.xml
cas.authn.saml-idp.core.entity-id=https://apereolab.olimpo.lab/idp
cas.service-registry.json.location: file:/etc/cas/services
cas.authn.ldap[0].order=1
cas.authn.ldap[0].name=AD-OLIMPO
cas.authn.ldap[0].ldap-url=ldap://exlab.olimpo.lab:389
cas.authn.ldap[0].base-dn=dc=olimpo,dc=lab
cas.authn.ldap[0].bind-dn=CN=APEREO USER,OU=Administrators,DC=olimpo,DC=lab
cas.authn.ldap[0].bind-credential=<TU_PASSWORD>
cas.authn.ldap[0].type=AUTHENTICATED
cas.authn.ldap[0].subtreeSearch=true
cas.authn.ldap[0].searchFilter=(&(objectClass=person)(sAMAccountName={user}))
cas.authn.ldap[0].principalAttributeList=sAMAccountName,mail,userPrincipalName
Fichero /etc/cas/services/cas_saml-100.json
Aquí nuevamente hemos hecho un poco de trampas para que capture cualquier URL.
{
"@class": "org.apereo.cas.services.RegexRegisteredService",
"serviceId": "http://.+",
"name" : "cas_saml",
"id" : 100,
"evaluationOrder" : 100
}
Fichero /etc/cas/services/adfs-101.json
{
"@class": "org.apereo.cas.support.saml.services.SamlRegisteredService",
"serviceId": "http://fs.olimpo.lab/adfs/services/trust",
"name": "adfs",
"id": 101,
"evaluationOrder": 101,
"description": "adfs lab service",
"logoutType": "NONE",
"attributeReleasePolicy": {
"@class": "org.apereo.cas.services.ReturnAllAttributeReleasePolicy",
},
"usernameAttributeProvider" : {
"@class" : "org.apereo.cas.services.PrincipalAttributeRegisteredServiceUsernameProvider",
"usernameAttribute" : "mail",
},
"requiredNameIdFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress",
"metadataLocation": "/etc/cas/metadata/adfs-metadata.xml",
"signAssertions": true,
"signResponses": false
}
Fichero /etc/cas/metadata/adfs-metadata.xml
Este fichero se obtiene desde ADFS. Concretamente se debe acceder a la ruta https://fs.olimpo.lab/FederationMetadata/2007-06/FederationMetadata.xml y descargar el fichero XML para luego copiarlo en esta ruta.
Directorio /etc/cas/saml
Contiene la definición del IDP, certificado de firma, encriptación, etc.
ls
idp-encryption.crt idp-encryption.key idp-metadata.xml idp-signing.crt idp-signing.key metadata-backups
Ya en la parte siguiente veremos algunas pruebas de funcionamiento y algunas mejoras que se pueden hacer para que todo vaya más fluido. Hasta el próximo episodio.