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.

Ldap Consolidated

Nota:

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.  

User Manage

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.

Idp Installation

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.

Tomcat Key

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

Location

2.  Modificar <SAML_IDP_HOME>/conf/attribute-resolver.xml para añadir definición de atributo y cadena de conexión LDAP

Attribute Resolver

3.  Modifique <SAML_IDP_HOME>/conf/handler.xml para eliminar todas las entradas de autenticación, excepto UsernamePassword y PreviousSession.

Login

4.  Modifique <SAML_IDP_HOME>/conf/logging.xml para un rastreo detallado de errores.

IDP Debugging

5.  Modificar <SAML_IDP_HOME>/conf/login.config.

Ldap Config

6.  Modificar <SAML_IDP_HOME>/conf/relying-party.xml

RelayingParty

7.  Modifique /conf/attribute-filter.xml para liberar el atributo UID y el grupo.  

Attribute-Filter

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.

SAMLKey

3.  Configurar el Gestor de autenticación.

AEM

4.  Configurar ReferrerFilter.

ReffererFilter

Verificación

1.  Haciendo una solicitud a AEM en http://<host>:<port>/ redirige a la página de inicio de sesión de IDP.

Login_home

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:

SAMLResponse
User Created at crx

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

Release_mail

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.

Private

2.  Actualizar el gestor de autenticación con la dirección de cierre de sesión y sincronizar el atributo.

Logout

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.

Mail

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í.

Esta obra está autorizada con arreglo a la licencia de Reconocimiento-NoComercial-CompartirIgual 3.0 Unported de Creative Commons.  Los términos de Creative Commons no cubren las publicaciones en Twitter™ y Facebook.

Avisos legales   |   Política de privacidad en línea