Versión simple de la demo de AEM y SAML disponible en http://helpx.adobe.com/es/experience-manager/kb/simple-saml-demo.html
Objetivo
AEM proporciona soporte para la solicitud de autenticación SAML 2.0 y actúa como proveedor de servicios SAML. Este artículo proporciona una muestra para instalar y configurar sus pruebas locales para lograr el registro individual web a través o dentro de los límites de la organización.
Ver también la documentación del producto en línea para el gestor de autenticación SAML.
Software utilizado para la configuración
Los binarios utilizados se mencionan a continuación. Puede utilizar el mismo o un equivalente.
Software | Versión | Descargado de |
Shibboleth IDP | 2.4.0 | http://shibboleth.net/downloads/identity-provider/latest/ |
Tomcat (servidor de aplicaciones para IDP) | apache-tomcat-6.0.37 | http://tomcat.apache.org/download-60.cgi |
OpenDS (servidor LDAP) | OpenDS-2.2.1 | https://opends.java.net/public/downloads_index.html |
JDK 1.6.0_26 | ||
AEM 5.6 |
Instalación y configuración
Instalación y configuración de LDAP de OpenDS
Siga las instrucciones de instalación de OpenDS. Durante la instalación, elija cargar los datos de prueba para evitar la creación de usuarios. No olvide la contraseña de administrador proporcionada durante la instalación. La siguiente imagen muestra la opción seleccionada durante la instalación.
Durante la integración con AEM, utilicé la propiedad de la categoría de negocio de LDAP para identificar el grupo al que pertenece el usuario.
Instalar IDP Shibboleth
Descomprima el binario descargado (shibboleth-identityprovider-2.4.0-bin.zip) y ejecute el archivo install.bat. La instalación crea el ID de entidad del IdP, los metadatos iniciales, un conjunto básico de archivos de configuración del IdP y un par de claves de certificado autofirmado que se utiliza para firmar/encriptar.
Instalar y configurar Tomcat
1. Descomprima apache-tomcat-6.0.37-windows-x64.zip en cualquier directorio (por ejemplo, C:\demo\appserver\apache-tomcat-6.0.37-windows-x64).
2. Cree un certificado SSL autofirmado.
3. Aplique el certificado a tomcat <TOMCAT_HOME>/conf/server.xml.
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" SSLEngine="on" SSLCertificateFile="C:/demo/appserver/apache-tomcat-6.0.37-windows-x64/apache-tomcat-6.0.37/cert/tomcatcert.pem" SSLCertificateKeyFile="C:/demo/appserver/apache-tomcat-6.0.37-windows-x64/apache-tomcat-6.0.37/cert/tomcatkey.pem" SSLPassword="password" />
4. Copiar "idp.war" de <SAML_IDP_HOME>/war/idp.war a <TOMCAT_HOME>/webapps
5. Cree el directorio <TOMCAT_HOME>/endorsed y copie los archivos .jar incluidos en el directorio de origen del IdP en el directorio recién creado.
6. Prueba rápida: el acceso a https://localhost:8443/idp/profile/Status es correcto.
Configuración de IDP de Shibboleth
1. Modifique <SAML_IDP_HOME>/conf/idp-metadata.xml para asegurarse de que todos los atributos de ubicación apuntan a la aplicación idp en tomcat 8443
2. Modificar <SAML_IDP_HOME>/conf/attribute-resolver.xml para añadir definición de atributo y cadena de conexión LDAP
3. Modifique <SAML_IDP_HOME>/conf/handler.xml para eliminar todas las entradas de autenticación, excepto UsernamePassword y PreviousSession.
4. Modifique <SAML_IDP_HOME>/conf/logging.xml para un rastreo detallado de errores.
5. Modificar <SAML_IDP_HOME>/conf/login.config.
6. Modificar <SAML_IDP_HOME>/conf/relying-party.xml
7. Modifique /conf/attribute-filter.xml para liberar el atributo UID y el grupo.
8. Añada el siguiente archivo de metadatos en <SAML_IDP_HOME>/metadata/adobecq.xml.
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://www.blogsaml.com"> <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol"> <md:KeyDescriptor> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SPInfo"> <ds:X509Data> <ds:X509Certificate> MIIEdzCCA1+gAwIBAgIJAPswGGW+b631MA0GCSqGSIb3DQEBBQUAMIGDMQswCQYD VQQGEwJVUzELMAkGA1UECBMCTUExDjAMBgNVBAcTBUFjdG9uMQ4wDAYDVQQKEwVB ZG9iZTESMBAGA1UECxMJTWFya2V0aW5nMQ8wDQYDVQQDEwZIYXNzYW4xIjAgBgkq hkiG9w0BCQEWE3NhbXBsZUBibG9nc2FtbC5jb20wHhcNMTQwNTIzMTkzODI1WhcN MTcwNTIyMTkzODI1WjCBgzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYD VQQHEwVBY3RvbjEOMAwGA1UEChMFQWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEP MA0GA1UEAxMGSGFzc2FuMSIwIAYJKoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwu Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsW8NAHsIvl4EdEu0 0eZHuSYOAFLDZa0EQzf5+QDE179uHkqFIYpgdSJO3qj3HNKqlU/vnZNhQBJ2tRrc BjI7pWQO/G9f+7pQKke9QVU88IDnmmGknlCTiaKLv4p68XHR4AeTI2tfulYpURa+ V5onIxXoyXqubrSxTb0zWVZy9iZmpPA2gCkH3Yzi/TM+yxz5A7q/Vh4pYm3+xqQS gb1h5CFpA3YWlfSw2ONvNKlx9vJjfC+UCFxzNzbEF7f5u/c2zdKs72b70W8CnwTg ny+C0qEDLKNYStVag8AUau9SmyXoKSShvHfZOGNW0ad1n44dD9TLCTKTpG1DloWI yugtzwIDAQABo4HrMIHoMB0GA1UdDgQWBBT6Ve57XbEy+G+EzQTE+o8rzEiimzCB uAYDVR0jBIGwMIGtgBT6Ve57XbEy+G+EzQTE+o8rzEiim6GBiaSBhjCBgzELMAkG A1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYDVQQHEwVBY3RvbjEOMAwGA1UEChMF QWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEPMA0GA1UEAxMGSGFzc2FuMSIwIAYJ KoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwuY29tggkA+zAYZb5vrfUwDAYDVR0T BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEATJi8KCGnNM6lVX8x+GBhm3q0VdF+ VIAvYXJ4TqP3DGSUFr2ETt187cQ3ZtJsU+U5mQ8NX6DRJ7QVZjKPe/6vRltVlsvR z+b8vjXlWVWo6Zjcd96MQibESEutzLlwfQBq3A3azzqUmtEpA2woXzhV5XXvAsqt HsPYgcM9mZNO+FS3pDkOEdfyQuG4nUa0s2jx/gIYtqcMJqTK5d3c1nAaUhLEVuYr Upm6t+eL0/Yw4hrTjP3kEQO6g5ABsv9ew7iPs7G1RMm5BJErHyAHvgAeP/NZD/H6 C4fnnHXKhR7wbpxu9VipDIXQBmblPSvWGak+KhsPiQucvOvf2ksVtxoyLQ== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:6502/saml_login" index="1"/> </md:SPSSODescriptor> </md:EntityDescriptor>
Configurar AEM
1. Instale AEM siguiendo http://dev.day.com/docs/en/cq/current/deploying/installing_cq.html.
2. En /etc/key en el repositorio, cree un nodo llamado saml. Dentro de este nodo, añada una nueva propiedad binaria llamada idp_cert para el certificado público del IdP. Es decir, suba el archivo desde <SAML_IDP_HOME>/credentials/idp.crt.
3. Configurar el Gestor de autenticación.
4. Configurar ReferrerFilter.
Verificación
1. Haciendo una solicitud a AEM en http://<host>:<port>/ redirige a la página de inicio de sesión de IDP.
2. Inicie sesión como usuario.2 con una contraseña como "contraseña" que llevará a la página principal de AEM. Vea la instantánea de la respuesta del rastreador saml y la creación automática de usuarios crx a continuación:
Mejora con AEM 6+
Con AEM 6 Sp1 en adelante, se agregó soporte para
- Capacidad de flujo de cierre único (cierre de sesión)
- Sincronizar atributos
- Grupo predeterminado configurable
La siguiente sección proporciona la actualización requerida en la demostración de configuración anterior para probar localmente la salida y sincronización del atributo de correo.
Actualizaciones de configuración en IDP Shibboleth
1. Modificar <SAML_IDP_HOME>/conf/attribute-filter.xml y <SAML_IDP_HOME>/conf/attribute-resolver.xml para liberar el correo de atributo
2. Modifique el archivo de metadatos en <SAML_IDP_HOME>/metadata/adobecq.xml para incluir SingleSignoutService
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="https://www.blogsaml.com"> <md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol urn:oasis:names:tc:SAML:1.1:protocol"> <md:KeyDescriptor> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="SPInfo"> <ds:X509Data> <ds:X509Certificate> MIIEdzCCA1+gAwIBAgIJAPswGGW+b631MA0GCSqGSIb3DQEBBQUAMIGDMQswCQYD VQQGEwJVUzELMAkGA1UECBMCTUExDjAMBgNVBAcTBUFjdG9uMQ4wDAYDVQQKEwVB ZG9iZTESMBAGA1UECxMJTWFya2V0aW5nMQ8wDQYDVQQDEwZIYXNzYW4xIjAgBgkq hkiG9w0BCQEWE3NhbXBsZUBibG9nc2FtbC5jb20wHhcNMTQwNTIzMTkzODI1WhcN MTcwNTIyMTkzODI1WjCBgzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYD VQQHEwVBY3RvbjEOMAwGA1UEChMFQWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEP MA0GA1UEAxMGSGFzc2FuMSIwIAYJKoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwu Y29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsW8NAHsIvl4EdEu0 0eZHuSYOAFLDZa0EQzf5+QDE179uHkqFIYpgdSJO3qj3HNKqlU/vnZNhQBJ2tRrc BjI7pWQO/G9f+7pQKke9QVU88IDnmmGknlCTiaKLv4p68XHR4AeTI2tfulYpURa+ V5onIxXoyXqubrSxTb0zWVZy9iZmpPA2gCkH3Yzi/TM+yxz5A7q/Vh4pYm3+xqQS gb1h5CFpA3YWlfSw2ONvNKlx9vJjfC+UCFxzNzbEF7f5u/c2zdKs72b70W8CnwTg ny+C0qEDLKNYStVag8AUau9SmyXoKSShvHfZOGNW0ad1n44dD9TLCTKTpG1DloWI yugtzwIDAQABo4HrMIHoMB0GA1UdDgQWBBT6Ve57XbEy+G+EzQTE+o8rzEiimzCB uAYDVR0jBIGwMIGtgBT6Ve57XbEy+G+EzQTE+o8rzEiim6GBiaSBhjCBgzELMAkG A1UEBhMCVVMxCzAJBgNVBAgTAk1BMQ4wDAYDVQQHEwVBY3RvbjEOMAwGA1UEChMF QWRvYmUxEjAQBgNVBAsTCU1hcmtldGluZzEPMA0GA1UEAxMGSGFzc2FuMSIwIAYJ KoZIhvcNAQkBFhNzYW1wbGVAYmxvZ3NhbWwuY29tggkA+zAYZb5vrfUwDAYDVR0T BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEATJi8KCGnNM6lVX8x+GBhm3q0VdF+ VIAvYXJ4TqP3DGSUFr2ETt187cQ3ZtJsU+U5mQ8NX6DRJ7QVZjKPe/6vRltVlsvR z+b8vjXlWVWo6Zjcd96MQibESEutzLlwfQBq3A3azzqUmtEpA2woXzhV5XXvAsqt HsPYgcM9mZNO+FS3pDkOEdfyQuG4nUa0s2jx/gIYtqcMJqTK5d3c1nAaUhLEVuYr Upm6t+eL0/Yw4hrTjP3kEQO6g5ABsv9ew7iPs7G1RMm5BJErHyAHvgAeP/NZD/H6 C4fnnHXKhR7wbpxu9VipDIXQBmblPSvWGak+KhsPiQucvOvf2ksVtxoyLQ== </ds:X509Certificate> </ds:X509Data> </ds:KeyInfo> </md:KeyDescriptor> <md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:6502/saml_login" index="1"/> <md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://www.blogsaml.com:8443/idp/Authn/UserPassword"/> </md:SPSSODescriptor> </md:EntityDescriptor>
Actualizaciones de configuración en AEM
1. Bajo /etc/key/saml en el repositorio agregue una nueva propiedad binaria llamada "private" que contiene la clave para el certificado público del archivo de metadatos (adobecq.xml). Es decir, suba el archivo demoprivatekey.pem desde el paquete de descarga de la demo.
2. Actualizar el gestor de autenticación con la dirección de cierre de sesión y sincronizar el atributo.
Verificación
1. Inicie sesión en AEM en http://<port>:<port>/ utilizando user.0 y, a continuación, cierre la sesión para redirigir a la página de inicio de sesión de IDP.
2. La propiedad Mail está sincronizada.
Limitaciones
El usuario debe existir en AEM
Los usuarios que inician sesión a través del gestor deben existir, o si faltan, deben crearse en AEM ("Autocreate CRX Users" debe ser verificado). Esto se debe a que el marco de autenticación de Sling, del que forma parte SamlAuthenticationHandler, extrae las credenciales de usuario de SAMLResponse e inicia sesión en el repositorio JCR utilizando dichas credenciales.
Acceso anónimo en todo el sitio con autenticación opcional
El gestor de autenticación se basa en la protección del contenido contra el acceso anónimo a través de la configuración de la ruta. Si todas las páginas del sitio de AEM necesitan ser accesibles de forma anónima, pero la autenticación también necesita ser una opción, el valor de configuración de la ruta se puede establecer en una ruta inexistente. Esto permitirá la autenticación SAML, pero también permitirá el acceso anónimo a todas las páginas del sitio. Si se utiliza esta estrategia, asegúrese de que SAMLReponse se publica en la ruta saml_login correcta (ver el siguiente punto).
La configuración de la ruta y saml_login
La SAMLResponse del IdP se debe publicar en la página "saml_login". Sin embargo, la página 'saml_login' debe estar dentro de la ruta que protege el gestor de autenticación (es decir, la configuración de la ruta). Por ejemplo, si la configuración de la ruta es '/', el IdP puede publicar en http://localhost:4502/saml_login. Si la ruta es /content/geometrixx, el IdP puede publicar en http://localhost:4502/content/geometrixx/saml_login o http://localhost:4502/content/geometrixx/does-not-exist/saml_login, pero http://localhost:4502/content/saml_login no funcionará.
Acceso iniciado de IdP y RelayState
En SP1, asegurarse de que el usuario vuelva a la página en la que se encontraba antes de iniciar sesión se realiza con la cookie saml_request_path, y no con el parámetro típico de RelayState que se encuentra en la mayoría de las implementaciones de SSO. Por lo tanto, aunque la autenticación iniciada por IdP terminará con éxito, el usuario final no será enviado a la página especificada por RelayState. Por consiguiente, si se implementa un enlace de inicio de sesión personalizado en una página de AEM (inicio de sesión de SP), asegúrese de configurar la cookie saml_request_path antes de enviar el navegador al IdP.
Error de "No se encontró ningún recurso"
Lo más probable es que esto se deba a que el usuario que ha iniciado sesión no tiene los permisos adecuados para ver la página. Para resolver este problema, asegúrese de que el usuario de SSO tiene permisos de lectura para carpetas como /content. Esto se logra configurando el gestor de autenticación para agregar usuarios de SSO a un grupo de usuarios que tenga todos los permisos necesarios.
Descargar
Las credenciales de acceso de IdP, las credenciales de cifrado, los archivos de configuración y los metadatos utilizados en este script de demostración se pueden descargar aquí.