- de:shibidp:config-mdv|Eintrag in Metadatenverwaltung ^ de:shibidp:uebersicht|Überblick: Tutorial zur IdP-Inbetriebnahme ^ de:shibidp:config-attributes-minimal|Minimalkonfiguration der Attribute ->
~~NOTOC~~
====== Anbindung des IdM (LDAP/AD) ======
{{INLINETOC 2}}
===== Vorbereitungen =====
==== Zertifikat am IdM ====
Der Hostname des IdM muss im Zertifikat enthalten sein, entweder direkt im CN oder im SubjectAlternativeName!
Der Pfad zum Root-Zertifikat der verwendeten PKI muss angegeben werden. So können Sie ihn vorab überprüfen:
root@idp:~# openssl s_client -connect ldap.uni-beispiel.de:ldaps -showcerts -CAfile /etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem
==== Verbindungsparameter bereithalten ====
So können Sie die LDAP-/AD-Verbindungsparameter manuell prüfen:
root@idp:~# ldapsearch -x -W -D cn=idp,cn=systemusers,dc=hochschule-XY,dc=de -H ldaps://ldap.hochschule-XY.de -b "ou=people,dc=hochschule-XY=de" '(uid=irgendeinExistierenderUser)'
===== Konfiguration zweier Abfragen =====
Bei einem Login-Vorgang des Users am IdP macht der IdP im Hintergrund zwei LDAP-Abfragen:
* Authentisierung des Users
* Abruf der Attribute des Users
Diese beiden Schritte werden in der Datei ''./conf/ldap.properties'' unabhängig voneinander konfiguriert.
==== LDAP-Abfrage 1: User-Authentisierung ====
# Beispielkonfiguration, die für OpenLDAP funktionieren kann:
idp.authn.LDAP.authenticator = bindSearchAuthenticator
idp.authn.LDAP.ldapURL = ldaps://ldap.hochschule-XY:636
idp.authn.LDAP.useStartTLS = false
idp.authn.LDAP.sslConfig = certificateTrust
# Wenn Ihr IdM den Aufbau eines LDAP-Connection-Pools nicht unterstützt, können Sie den Pool global abschalten,
# in dem Sie diese Zeile einfügen und das Kommentarzeichen entfernen:
# idp.authn.LDAP.disablePooling = true
# DFN-PKI:
#idp.authn.LDAP.trustCertificates = /etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem
# Sectigo-Zertifikat:
idp.authn.LDAP.trustCertificates = /etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem
# lokales CA-Zertifikat:
#idp.authn.LDAP.trustCertificates = /etc/ssl/certs/beispiel-hs_local_ca_cert.pem
# Wenn festgestellt werden soll, ob der Account aktiv ist, müssen die entsprechenden Attribute geholt werden
idp.authn.LDAP.returnAttributes = passwordExpirationTime,loginGraceRemaining
idp.authn.LDAP.baseDN = ou=people,dc=hochschule-XY,dc=de
idp.authn.LDAP.userFilter = (uid={user})
idp.authn.LDAP.bindDN = cn=idp,cn=systemusers,dc=hochschule-XY,dc=de
# Sofern die Useraccounts im LDAP in Sub-Bäumen verteilt sind, aktivieren Sie bitte dies:
#idp.authn.LDAP.subtreeSearch = true
Passwörter werden ab IdPv4 standardmäßig in der besser geschützen Datei ''./credentials/secrets.properties'' gespeichert. Hier hinterlegen Sie das Bind-Passwort.
idp.authn.LDAP.bindDNCredential = geheim007
Laden Sie das Servlet neu:
root@idp:~# touch /opt/shibboleth-idp/war/idp.war
Siehe auch im Shibboleth Wiki unter [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199505688/LDAPAuthnConfiguration]].
==== LDAP-Abfrage 2: User-Attribute ====
idp.attribute.resolver.LDAP.searchFilter = (uid=$resolutionContext.principal)
Triggern Sie das Einlesen der neuen Einstellungen:
root@idp:~# touch /opt/shibboleth-idp/war/idp.war
==== AD-Abfrage 1: User-Authentisierung ====
# Beispielkonfiguration, die für AD funktionieren kann:
idp.authn.LDAP.authenticator = adAuthenticator
idp.authn.LDAP.ldapURL = ldaps://ldap.hochschule-XY:636
idp.authn.LDAP.useStartTLS = false
idp.authn.LDAP.sslConfig = certificateTrust
# Wenn Ihr IdM den Aufbau eines LDAP-Connection-Pools nicht unterstützt, können Sie den Pool global abschalten,
# in dem Sie diese Zeile einfügen und das Kommentarzeichen entfernen:
# idp.authn.LDAP.disablePooling = true
# DFN-PKI:
#idp.authn.LDAP.trustCertificates = /etc/ssl/certs/T-TeleSec_GlobalRoot_Class_2.pem
# Sectigo-Zertifikat:
idp.authn.LDAP.trustCertificates = /etc/ssl/certs/USERTrust_RSA_Certification_Authority.pem
# lokales CA-Zertifikat:
#idp.authn.LDAP.trustCertificates = /etc/ssl/certs/beispiel-hs_local_ca_cert.pem
# Wenn festgestellt werden soll, ob der Account aktiv ist, müssen die entsprechenden Attribute geholt werden
idp.authn.LDAP.returnAttributes = passwordExpirationTime,loginGraceRemaining
idp.authn.LDAP.baseDN = ou=people,dc=hochschule-XY,dc=de
# statt "(uid={user})" nehmen Sie bei AD üblicherweise "(cn={user})" oder "(sAMAccountName={user})"
idp.authn.LDAP.userFilter = (uid={user})
idp.authn.LDAP.bindDN = cn=idp,cn=systemusers,dc=hochschule-XY,dc=de
# Format DN resolution, used by directAuthenticator, adAuthenticator
idp.authn.LDAP.dnFormat. = %s@domain.com
# Sofern die Useraccounts im LDAP in Sub-Bäumen verteilt sind, aktivieren Sie bitte dies:
#idp.authn.LDAP.subtreeSearch = true
Passwörter werden ab IdPv4 standardmäßig in der besser geschützen Datei ''./credentials/secrets.properties'' gespeichert. Hier hinterlegen Sie das Bind-Passwort.
idp.authn.LDAP.bindDNCredential = geheim007
Laden Sie das Servlet neu:
root@idp:~# touch /opt/shibboleth-idp/war/idp.war
Siehe auch im Shibboleth Wiki unter [[https://shibboleth.atlassian.net/wiki/spaces/IDP5/pages/3199505688/LDAPAuthnConfiguration]].
==== AD-Abfrage 2: User-Attribute ====
# wie bei Abfrage 1 muss hier das relevante User-Attribut angegeben werden, für
# MS-AD ist das üblicherweise "(cn=$resolutionContext.principal)" oder "(sAMAccountName=$resolutionContext.principal)"
idp.attribute.resolver.LDAP.searchFilter = (uid=$resolutionContext.principal)
Triggern Sie das Einlesen der neuen Einstellungen:
root@idp:~# touch /opt/shibboleth-idp/war/idp.war
===== Test der LDAP-Verbindung =====
Testen Sie die LDAP-Verbindung, bevor Sie weitermachen. Attribute werden Ihnen zum jetzigen Zeitpunkt noch nicht angezeigt.
Sie haben im [[de:shibidp:config-mdv|letzten Schritt]] Ihren IdP in die Test-Föderation aufgenommen. Wenn seitdem mindestens 90 Minuten vergangen sind, können Sie jetzt einen ersten Login-Versuch mithilfe unseres öffentlichen [[https://testsp3.aai.dfn.de/|Test-SP3]] machen.
Weitere Informationen zu den Test-SPs finden Sie unter [[de:functionaltest_idp|Funktionstest IdP]].
==== Troubleshooting ====
* Wenn Sie den Fehler ''opensaml::SecurityPolicyException'' bekommen, sehen Sie bitte auf der [[de:shibidp:troubleshooting#opensamlsecuritypolicyexception|Troubleshooting]]-Seite nach.
* Beim LDAP-Fehler ''Invalid Credentials'' stellen Sie bitte sicher, dass Sie in ''./conf/ldap.properties'' bzw. ''./credentials/secrets.properties'' **bei den Zugangsdaten des Bind-Accounts keine Leerzeichen an den Zeilenenden** stehen haben. Das Passwort steht //nicht// in Hochkommata oder Anführungszeichen.
* Bei der Fehlermeldung ''Login Failure: javax.net.ssl.SSLException: Could not initialize SSL context'' stellen Sie bitte sicher, dass in ''./conf/ldap.properties'' beim **Pfad zum Zertifikat kein Leerzeichen am Zeilenende** steht.
* Sollten Sie nicht erfolgreich zum Test-SP zurückgeleitet werden, achten Sie darauf, von welchem System die Fehlermeldung im Browser generiert wird: Entsteht sie am IdP oder an unserem Test-SP? Schauen Sie bitte in der Logdatei ''./logs/idp-process.log'' oder im [[https://wiki.shibboleth.net/confluence/display/IDP4/Troubleshooting|Shibboleth-Wiki]] nach möglichen Ursachen.
* Sollten Sie damit nicht weiterkommen, senden Sie uns bitte einen Screenshot der Fehlermeldung und den genauen Zeitpunkt, zu dem der Fehler aufgetreten ist, damit wir mithilfe unseres SP-Logs die Ursache bestimmen können.
Erst wenn der Login funktioniert, sollten Sie weitermachen.
{{tag>tutorial ldap idm included-in-ansible}}