Nota:

La versione semplice di aem saml demo è disponibile all'indirizzo  http://helpx.adobe.com/experience-manager/kb/simple-saml-demo.html 

Obiettivo

AEM fornisce supporto per la richiesta di autenticazione SAML 2.0 e agisce come fornitore di servizi SAML. Questo articolo fornisce un esempio per l'installazione e la configurazione dei test locali per ottenere il Single Sign-on web attraverso o all'interno dei confini organizzativi.

Vedere anche la documentazione online del prodotto per il SAML Authentication Handler.

Software utilizzato per la configurazione

I file binari utilizzati sono menzionati di seguito. È possibile utilizzare lo stesso o un equivalente.

Software Versione Scaricato da
Shibboleth IDP 2.4.0 http://shibboleth.net/downloads/identity-provider/latest/
Tomcat (App server per IDP) apache-tomcat-6.0.37 http://tomcat.apache.org/download-60.cgi
OpenDS (Server LDAP) OpenDS-2.2.1 https://opends.java.net/public/downloads_index.html
JDK 1.6.0_26
AEM 5.6

Installazione e configurazione

Installa e configura OpenDS LDAP

Seguire le istruzioni di installazione di OpenDS. Durante l'installazione, scegli di caricare i dati di test per evitare la creazione dell'utente. Non dimenticarti la password dell'amministratore fornita durante l'installazione. La schermata seguente mostra l'opzione selezionata durante l'installazione.

Ldap Consolidated

Nota:

Durante l'integrazione con AEM, ho utilizzato la proprietà della categoria aziendale di LDAP per identificare il gruppo di appartenenza dell'utente.  

User Manage

Installa Shibboleth IDP

Decomprimi il file binario scaricato (shibboleth-identityprovider-2.4.0-bin.zip) ed esegui il file install.bat. L'installazione crea l'ID entità dell'IdP, i metadati iniziali, un set base di file di configurazione IdP e una coppia di chiavi di certificati autofirmati utilizzati per la firma/crittografia.

Idp Installation

Installa e configura Tomcat

1. Decomprimi apache-tomcat-6.0.37-windows-x64.zip in qualsiasi directory (per esempio, C:\demo\appserver\apache-tomcat-6.0.37-windows-x64).

2. Crea un certificato SSL autofirmato.

Tomcat Key

3. Applica il certificato 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.  Copia "idp.war" da <SAML_IDP_HOME>/war/idp.war to <TOMCAT_HOME>/webapps

5.  Crea la directory <TOMCAT_HOME>/endorsed e copia i file .jar inclusi nella directory di origine IdP approvata nella directory appena creata.

6.  Test rapido: L'accesso a https://localhost:8443/idp/profile/Status restituisce OK.

Configura Shibboleth IDP

1. Modifica <SAML_IDP_HOME>/conf/idp-metadata.xml per assicurarti che tutti gli attributi di posizione puntino all'applicazione idp su tomcat 8443

Location

2.  Modifica <SAML_IDP_HOME>/conf/attribute-resolver.xml per aggiungere la definizione dell'attributo e la stringa di connessione LDAP

Attribute Resolver

3.  Modifica <SAML_IDP_HOME>/conf/handler.xml per rimuovere tutte le voci per l'autenticazione eccetto "UsernamePassword" e "PreviousSession."

Login

4.  Modifica <SAML_IDP_HOME>/conf/logging.xml per ottenere una traccia di debug dettagliata.

IDP Debugging

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

Ldap Config

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

RelayingParty

7.  Modifica /conf/attribute-filter.xml per rilasciare l'attributo UID e il gruppo.  

Attribute-Filter

8.  Aggiungi il seguente file di metadati a <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>

Configura AEM

1.  Installa AEM seguendo http://dev.day.com/docs/en/cq/current/deploying/installing_cq.html.

2.  Sotto /etc/key nel repository, crea un nodo chiamato "saml". All'interno di questo nodo, aggiungi una nuova funzionalità binaria chiamata "idp_cert" per il certificato pubblico dell'IdP.  Cioè, carica il file da <SAML_IDP_HOME>/credentials/idp.crt.

SAMLKey

3.  Configura il gestore dell'autenticazione.

AEM

4.  Configura ReferrerFilter.

ReffererFilter

Verifica

1.  Effettuare una richiesta all'AEM all'indirizzo http://<host>:<port>/ reindirizza alla pagina di accesso IDP.

Login_home

2.  Accedere come utente.2 con password come "password" ti porta alla home page di AEM. Guarda l'istantanea della risposta del saml tracker e la creazione automatica dell'utente crx qui sotto:

SAMLResponse
User Created at crx

Miglioramento con AEM6+

Da AEM6 Sp1 in avanti, è stato aggiunto il supporto per

  • Single sign-off flow capability (Logout)
  • Sincronizza gli attributi
  • Gruppo di default configurabile

La sezione sottostante fornisce l'aggiornamento richiesto nella demo di configurazione di cui sopra per il test locale di logout e sincronizzazione dell'attributo mail.

Aggiornamenti di configurazione in Shibboleth IDP

1.  Modifica <SAML_IDP_HOME>/conf/attribute-filter.xml & <SAML_IDP_HOME>/conf/attribute-resolver.xml per rilasciare l'attributo mail

Release_mail

2.  Modifica il file di metadati in <SAML_IDP_HOME>/metadata/adobecq.xml per includere 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>

Aggiornamenti di configurazione in AEM

1.  Sotto /etc/key/saml nel repository aggiungere una nuova funzionalità binaria chiamata "private" contenente la chiave per il certificato pubblico del file di metadati (adobecq.xml).  Cioè, carica il file demoprivatekey.pem dal pacchetto demo di download.

Private

2.  Aggiorna Authentication Handler con logout url e sincronizza l'attributo.

Logout

Verifica

1.  Effettua il login ad AEM all'indirizzo http://<port>:<port>/ using user.0, quindi il logout dovrebbe reindirizzare alla pagina di accesso IDP.  

2.  La proprieta' della posta e' sincronizzata.

Mail

Limitazioni   

L'utente deve esistere in AEM
Gli utenti che si collegano tramite il gestore devono esistere, o, se mancanti, devono essere creati in AEM ("Autocreate CRX Users" deve essere controllato). Questo perché il framework di autenticazione Sling, di cui SamlAuthenticationHandler fa parte, estrae le credenziali utente dalla SAMLResponse e accede al repository JCR utilizzando tali credenziali.

Sitewide Anonymous Access con autenticazione opzionale
Il gestore dell'autenticazione si basa sulla protezione del contenuto dall'accesso anonimo tramite la configurazione del percorso. Se tutte le pagine del sito AEM devono essere accessibili in forma anonima, ma anche l'autenticazione deve avere un'opzione, il valore di configurazione del percorso può essere impostato su un percorso inesistente. Questo permetterà l'autenticazione SAML ma anche l'accesso anonimo a tutte le pagine del sito. Se si utilizza questa strategia, assicurarsi che il SAMLReponse POSTs al percorso corretto saml_login (vedere il prossimo articolo).


La configurazione del percorso e saml_login
La SAMLResponse dell'IdP deve essere pubblicata alla pagina 'saml_login'. Tuttavia, la pagina 'saml_login' deve essere all'interno del percorso che il gestore di autenticazione protegge (cioè la configurazione del percorso). Per esempio, se la configurazione del percorso è '/', l'IdP può inviare un messaggio a http://localhost:4502/saml_login. Se il percorso è '/content/geometrixx' l'IdP può pubblicare su http://localhost:4502/content/geometrixx/saml_login o http://localhost:4502/content/geometrixx/does-not-exist/saml_login ma http://localhost:4502/content/saml_login non funzionerà.


IdP Initiated Login e RelayState
In SP1, assicurando che un utente ritorni alla pagina in cui si trovava prima di effettuare l'accesso con il cookie saml_request_path e non con il tipico parametro RelayState trovato con la maggior parte delle implementazioni SSO. Pertanto, anche se l'autenticazione avviata dall'IdP terminerà con successo, l'utente finale non verrà inviato alla pagina specificata da RelayState. Di conseguenza, se su una pagina AEM (SP initiated login) viene implementato un link di login personalizzato, assicurarsi di impostare il cookie saml_request_path prima di inviare il browser all'IdP.


No Resource Found Error

(Nessuna risorsa trovata) Questo molto probabilmente deriva dal fatto che l'utente connesso non dispone delle autorizzazioni appropriate per visualizzare la pagina. Per risolvere questo problema, assicurarsi che l'utente SSO abbia i permessi di lettura delle cartelle come /content. Questo è possibile configurando il gestore di autenticazione per aggiungere utenti SSO a un gruppo di utenti che ha tutti i permessi necessari.

Scarica

Le credenziali di firma dell'IdP, le credenziali di crittografia, i file di configurazione, i metadati utilizzati in questo script demo possono essere scaricati qui.

Questo prodotto è concesso in licenza in base alla licenza di Attribuzione-Non commerciale-Condividi allo stesso modo 3.0 Unported di Creative Commons.  I post su Twitter™ e Facebook non sono coperti dai termini di Creative Commons.

Note legali   |   Informativa sulla privacy online