Einfache Version von aem saml demo verfügbar unter https://helpx.adobe.com/de/experience-manager/kb/simple-saml-demo.html
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.

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

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.

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.

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.

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

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

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

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

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

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

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.

3. Authentifizierungs-Handler konfigurieren.

4. ReferrerFilter konfigurieren.

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

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:


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.

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.

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

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

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.
Bei Ihrem Konto anmelden