Ziel

AEM unterstützt die SAML 2.0-Authentifizierungsanforderung und fungiert als SAML-Dienstanbieter. In diesem Artikel finden Sie ein Beispiel für die Installation und Einrichtung Ihrer lokalen Tests, um Web-Single-Sign-On über oder innerhalb von Unternehmensgrenzen hinweg zu erreichen.

Sehen Sie auch die Online-Produktdokumentation für den SAML-Authentifizierungs-Handler.

Für das Setup verwendete Software

Die verwendeten Binärdateien sind unten aufgeführt. Sie können dasselbe oder ein Äquivalent verwenden.

Software Version Heruntergeladen von
Shibboleth-IDP 2.4.0 http://shibboleth.net/downloads/identity-provider/latest/
Tomcat (Anwendungsserver für IDP) apache-tomcat-6.0.37 http://tomcat.apache.org/download-60.cgi
OpenDS (LDAP-Server) OpenDS 2.2.1 https://opends.java.net/public/downloads_index.html
JDK 1.6.0_26
AEM 5.6

Installation und Konfiguration

Installieren und Konfigurieren von OpenDS-LDAP

Folgen Sie den Installationsanweisungen von OpenDS. Wählen Sie während der Installation das Laden von Testdaten, um das Anlegen eines Benutzers zu vermeiden. Denken Sie daran, das Admin-Kennwort während der Installation anzugeben. Der folgende Screenshot zeigt die bei der Installation gewählte Option.

Ldap Consolidated

Hinweis:

Bei der Integration mit AEM habe ich die Geschäftskategorieeigenschaft von LDAP verwendet, um die Gruppe zu identifizieren, der der Benutzer angehört.  

User Manage

Shibboleth-IDP installieren

Entpacken Sie die heruntergeladene Binärdatei „shibboleth-identityprovider-2.4.0-bin.zip“ und führen Sie die Datei „install.bat“ aus. Die Installation erstellt die Entity-ID des IdPs, initiale Metadaten, einen Basissatz von IdP-Konfigurationsdateien und ein Schlüsselpaar von selbstsignierten Zertifikaten, die zum Signieren/Verschlüsseln verwendet werden.

Idp Installation

Installieren und Konfigurieren von Tomcat

1. Entpacken Sie „apache-tomcat-6.0.37-windows-x64.zip“ in ein beliebiges Verzeichnis (zum Beispiel C:\demo\appserver\apache-tomcat-6.0.37-windows-x64).

2. Erstellen Sie ein selbstsigniertes SSL-Zertifikat.

Tomcat Key

3. Wenden Sie das Zertifikat auf Tomcat <TOMCAT_HOME>/conf/server.xml an.

<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.   Kopiere „idp.war“ von <SAML_IDP_HOME>/war/idp.war in <TOMCAT_HOME>/webapps

5.   Legen Sie das Verzeichnis <TOMCAT_HOME>/endorsed an und kopieren Sie die .jar-Dateien, die im Verzeichnis „IdP source endorsed“ enthalten sind, in das neu erstellte Verzeichnis.

6.   Schnelltest: Zugriff auf https://localhost:8443/idp/profile/Status gibt OK zurück.

Shibboleth-IDP konfigurieren

1. Ändern Sie <SAML_IDP_HOME>/conf/idp-metadata.xml, um sicherzustellen, dass alle Standortattributpunkte auf idp-App auf Tomcat 8443 anzeigen.

Location

2.   Ändern Sie <SAML_IDP_HOME>/conf/attribute-resolver.xml, um die Definition des Attributs und des LDAP-Verbindungsstrings
hinzuzufügen.

Attribute Resolver

3.   Ändern Sie <SAML_IDP_HOME>/conf/handler.xml, um alle Einträge für die Authentifizierung außer „UsernamePassword“ und „PreviousSession“
zu entfernen.

Login

4.   Ändern Sie <SAML_IDP_HOME>/conf/logging.xml für detaillierte Debug-Verfolgung.

IDP Debugging

5.   Ändern Sie <SAML_IDP_HOME>/conf/login.config.

Ldap Config

6.   Ändern Sie <SAML_IDP_HOME>/conf/relying-party.xml

RelayingParty

7.   Ändern Sie /conf/attribute-filter.xml, um das Attribut UID und die Gruppe freizugeben.  

Attribute-Filter

8.   Fügen Sie die folgende Metadaten-Datei unter <SAML_IDP_HOME>/metadata/adobecq.xml hinzu.

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

AEM konfigurieren

1.   Installieren Sie AEM nach http://dev.day.com/docs/en/cq/current/deploying/installing_cq.html.

2.   Erstellen Sie unter /etc/key im Repository einen Knoten mit dem Namen „saml“. Fügen Sie innerhalb dieses Knotens eine neue binäre Eigenschaft namens „idp_cert“ für das öffentliche Zertifikat des IdP hinzu.  Das heißt, laden Sie die Datei von <SAML_IDP_HOME>/credentials/idp.crt hoch.

SAMLKey

3.   Authentifizierungs-Handler konfigurieren.

AEM

4.   ReferrerFilter konfigurieren.

ReffererFilter

Überprüfung

1.   Eine Anfrage an AEM unter http://<host>:<port>/ leitet zur Anmeldeseite von IDP weiter.

Login_home

2.   Melden Sie sich als user.2 mit Kennwort an, da Sie „password“ zur AEM-Homepage führt. Den Speicherauszug der saml-Trackerantwort und crx-Automatische Benutzererstellung finden Sie weiter unten:

SAMLResponse
User Created at crx

Erweiterung mit AEM 6+

Sie erhalten ab Version AEM 6 SP1, zusätzliche Unterstützung für

  • Einmalabmeldung-Flow-Kapazität (Logout)
  • Attribute synchronisieren
  • Konfigurierbare Standardgruppe

Nachfolgend finden Sie ein Update, das in der obigen Konfigurationsdemo zum lokalen Testen der Abmeldung und Synchronisation des Mailattributs erforderlich ist.

Konfigurations-Updates in Shibboleth-IDP

1.   Ändern Sie <SAML_IDP_HOME>/conf/attribute-filter.xml und <SAML_IDP_HOME>/conf/attribute-resolver.xml, um das Attribut Mail freizugeben.

Release_mail

2.   Ändern Sie die Metadaten-Datei unter <SAML_IDP_HOME>/metadata/adobecq.xml, um die Funktion 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>

Konfigurations-Updates in AEM

1.   Fügen Sie unter /etc/key/saml im Repository eine neue binäre Eigenschaft namens „private“ hinzu, die den Schlüssel für das öffentliche Zertifikat der Metadaten-Datei (adobecq.xml) enthält.  Das heißt, laden Sie die Datei demoprivatekey.pem aus dem Demo-Downloadpaket hoch.

Private

2.   Authentifizierungs-Handler mit Abmelde-URL aktualisieren und Attribut synchronisieren.

Logout

Überprüfung

1.   Melden Sie sich bei AEM unter http://<port>:<port>/ mit user.0 an und dann sollte die Abmeldung auf die IDP-Anmeldeseite umgeleitet werden.  

2.   Mail-Eigenschaft wird synchronisiert.

Mail

Einschränkungen   

Benutzer muss in AEM vorhanden sein
Benutzer, die sich über den Handler einloggen, müssen vorhanden sein oder, wenn sie fehlen, müssen sie in AEM angelegt werden („CRX-Benutzer automatisch erstellen“ muss aktiviert sein). Dies liegt daran, dass das Sling-Authentifizierungs-Framework, zu dem der SamlAuthenticationHandler gehört, Benutzeranmeldedaten aus der SAMLResponse extrahiert und sich mit diesen Anmeldedaten im JCR-Repository anmeldet.

Site-weiter anonymer Zugriff mit optionaler Authentifizierung
Der Authentifizierungs-Handler basiert auf dem Schutz von Inhalten vor anonymem Zugriff über die Pfad-Konfiguration. Wenn alle Seiten auf der AEM-Site anonym zugänglich sein sollen, aber auch die Authentifizierung eine Option sein soll, kann der Pfad-Konfigurationswert auf einen nicht vorhandenen Pfad gesetzt werden. Dies ermöglicht die SAML-Authentifizierung, aber auch den anonymen Zugriff auf alle Seiten der Website. Wenn diese Strategie verwendet wird, stellen Sie sicher, dass die SAMLReponse-POSTs den richtigen saml_login-Pfad haben (siehe nächster Punkt).


Pfadkonfiguration und saml_login
Die SAMLResponse des IdP muss auf der Seite „saml_login“ veröffentlicht werden. Die Seite „saml_login“ muss jedoch innerhalb des Pfades liegen, den der Authentifizierungs-Handler schützt (d. h. die Pfad-Konfiguration). Zum Beispiel, wenn die Pfad-Konfiguration „/“ ist, kann das IdP auf http://localhost:4502/saml_login posten. Wenn der Pfad „/content/geometrixx“ ist, kann das IdP auf http://localhost:4502/content/geometrixx/saml_login oder http://localhost:4502/content/geometrixx/does-not-exist/saml_login posten, aber http://localhost:4502/content/saml_login funktioniert nicht.


IdP-Initiierte Anmeldung und RelayState
In SP1 wird mit dem saml_request_path cookie sichergestellt, dass ein Benutzer zu der Seite zurückkehrt, auf der er sich vor der Anmeldung befand, und nicht mit dem typischen RelayState-Parameter, der bei den meisten SSO-Implementierungen vorzufinden ist. Obwohl die von IdP initiierte Authentifizierung erfolgreich abgeschlossen wird, wird der Endbenutzer nicht an die vom RelayState angegebene Seite weitergeleitet. Wenn ein benutzerdefinierter Anmeldelink auf einer AEM-Seite implementiert ist (SP-initiierte Anmeldung), stellen Sie sicher, dass das Cookie „saml_request_path“ gesetzt ist, bevor Sie den Browser an das IdP senden.


„Keine Ressource gefunden“-Fehler

Dies ist höchstwahrscheinlich darauf zurückzuführen, dass der angemeldete Benutzer nicht über die entsprechenden Berechtigungen zum Anzeigen der Seite verfügt. Um dieses Problem zu beheben, stellen Sie sicher, dass der SSO-Benutzer Leserechte für Ordner wie „/content“ erhält. Dies wird erreicht, indem der Authentifizierungs-Handler so konfiguriert wird, dass er SSO-Benutzer zu einer Benutzergruppe hinzufügt, die über alle erforderlichen Berechtigungen verfügt.

Herunterladen

IdPs Signaturdaten, Verschlüsselungsdaten, Konfigurationsdateien und Metadaten, die in diesem Demo-Skript verwendet werden, können hier heruntergeladen werden.

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie