Dieser Artikel beschreibt, wie Sie LDAP für den Schutz von Dateien in IBM HTTP Server konfigurieren.
Vorbereitende Schritte
Veraltetes Feature: Das Modul "mod_ibm_ldap" wird in diesem Release von IBM® HTTP Server zwecks Kompatibilität mit früheren Releases bereitgestellt. Wenn Sie das Modul "mod_ibm_ldap" für Ihre LDAP-Konfiguration verwenden möchten, müssen Sie vorhandene Konfigurationen auf die Verwendung der Module "mod_authnz_ldap" und "mod_ldap" umstellen, um die zukünftige Unterstützung Ihrer LDAP-Konfiguration zu gewährleisten. Eine Beschreibung zur Verwendung des Moduls "mod_ldap" finden Sie im Abschnitt
Authentifizierung mit LDAP in IBM HTTP Server über mod_ldap.
depfeat
Das LDAP-Modul wird standardmäßig nicht in IBM HTTP Server geladen. Ohne die Anweisung LoadModule können die LDAP-Features nicht verwendet werden.
Wenn Sie die LDAP-Funktion aktivieren möchten, fügen Sie der Datei httpd.conf von IBM HTTP Server wie folgt eine Anweisung LoadModule hinzu:
Wenn Sie den LDAP-Client auf Ihrem Computer installiert haben, können Sie mit dem Tool ldapsearch die Werte testen, die Sie für die verschiedenen Einstellungen verwenden möchten.
Informationen zu diesem Vorgang
Ausführliche Beschreibungen zu den LDAP-Anweisungen (mod_ibm_ldap) finden Sie im Artikel LDAP-Anweisungen.
Vorgehensweise
- Editieren Sie die Konfigurationsdatei httpd.conf von IBM HTTP Server.
- Geben Sie die Ressource an, für die der Zugriff eingeschränkt werden soll. Beispiel:
<Directory "/secure_info">.
- Fügen Sie der Datei httpd.conf Anweisungen für die zu schützende Verzeichnisposition (Container) hinzu, und geben Sie die für Ihre Umgebung zutreffenden Werte an.
Beispiel:
- LdapConfigFile Pfad_zu_ldap.prop
- AuthType Basic
- AuthName "Name des geschützten Realm"
- Require valid-user
- Es gibt drei Möglichkeiten, wie Sie IBM HTTP Server für die Authentifizierung mit Ihrer vorhandenen LDAP-Installation verwenden können.
- Berechtigung basierend auf LDAP-Gruppenzugehörigkeit.
Verwenden Sie LDAP, um Benutzerkennwörter zu überprüfen und um zu prüfen, ob der Benutzer in einer in LDAP definierten Gruppe vorhanden ist.
Anmerkung: Die Zugehörigkeit zur Gruppe bestimmt, ob der Benutzer auf die Ressource zugreifen darf, nicht der eigene LDAP-Eintrag des Benutzers.
Wenn Sie beispielsweise den Zugriff auf eine Gruppe beschränken möchten, fügen Sie die folgende Anweisung hinzu:
LDAPRequire group grp1
Wenn Sie LDAPRequire auf diese Art verwenden möchten, müssen Sie Gruppen in Ihrem LDAP-Repository konfiguriert haben, die den folgenden Regeln entsprechen (es wird der Beispielgruppennamen grp1 verwendet):
- Es gibt einen Eintrag in Ihrem LDAP-Repository, der dem folgenden Suchfilter entspricht, bei dem die Werte groupofnames und groupofuniquenames Beispielwerte sind,
die in ldap.group.dnattributes angegeben sind.
Anmerkung: Der eigentliche Wert von ldap.group.dnattributes ist eine Liste mit Objektklassen (objectclasses), die eine Gruppe in Ihrem LDAP-Schema bezeichnet.
ldapsearch ... "(&(cn=grp1)(|(objectclass=groupofnames)
(objectclass=groupofuniquenames)))"
- Zu dem LDAP-Eintrag für grp1 gehört eine Reihe von Attributen, die dem folgenden Suchfilter entsprechen, bei dem die Werte member und
uniquemember Beispielwerte aus ldap.group.memberAttributes sind.
Anmerkung: Der eigentliche Wert von ldap.group.memberAttributes
ist eine Liste mit Objektklassen (objectclasses), die die Zugehörigkeit zu einer Gruppe bezeichnet. Die Werte dieser Einträge sind die definierten Namen (Distinguished Names, DN) Ihrer Benutzer.
ldapsearch ... "(&(cn=grp1)(|(objectclass=groupofnames)
(objectclass=groupofuniquenames)))" member uniquemember
Beispiel:
ldapsearch -x -h myldapserver -D cn=root -w rootpw
"(&(cn=grp1)(|(objectclass=groupofnames)(objectclass=groupofuniquenames)))"
member uniquemember
dn: cn=group1,ou=myunit,o=myorg,c=US
member: cn=user1, ou=otherunit, o=myorg, c=US
member: cn=user12, ou=otherunit, o=myorg, c=US
Wenn ein in der Liste in ldap.group.dnattributes genanntes Objekt dieses Typs zur gesuchten Gruppe gehört, wird es auf dieselbe Art und Weise
rekursiv gesucht, und zwar bis zu der mit ldap.group.search.depth angegebenen Verschachtelungstiefe.
- IBM HTTP Server verwendet zuerst ldap.group.name.filter und ldap.user.cert.filter, um den für den Benutzer und die Gruppe angegebenen CN
in definierte Namen (Distinguished Name, DN) umzusetzen. Als nächstes führt IBM HTTP Server eine Suche auf Grundlage des Gruppen-DN für die Einträge durch, deren Wert dem Benutzer-DN entspricht.
Beispiel:
ldapsearch ... -b "cn=grp1,ou=myunit,o=myorg,c=US"
"|((member=cn=user1,ou=otherunit,o=myorg,c=US)
(uniquemember=cn=user1,ou=otherunit,o=myorg,c=US))"
- Berechtigung basierend auf LDAP-Attributen für Benutzer Verwenden Sie LDAP für die Überprüfung von Benutzerkennwörtern und um
festzustellen, ob der Benutzer mit einer Gruppe von Attributen übereinstimmt (das Attribut, über das der Benutzer als zugriffsberechtigt für die Ressource
identifiziert wird, ist Teil des eigenen LDAP-Eintrags des Benutzers).
Beispiel:
LDAPRequire filter "(&(jobtitle=accountant)(location=newyork))"
Wenn Sie diese Form von LDAPRequire verwenden möchten, muss IBM HTTP Server die Anweisung ldap.user.cert.filter verwenden, um den für den Benutzer angegebenen CN in einen DN umzusetzen. IBM HTTP Server
muss ebenfalls eine Suche mit dem Benutzer-DN als Basis durchführen und den in der Anweisung LDAPRequire angegebenen Suchfilter verwenden. Wenn Ergebnisse zurückgegeben werden, kann die Berechtigung erfolgreich durchgeführt werden.
Beispiel:
ldapsearch ... -b "cn=user1,ou=otherunit,o=myorg,c=US" "(&(jobtitle=accountant)
(location=newyork))"
Einige Attribute (manchmal auch als dynamische Rollen bezeichnet) in LDAP werden vom LDAP-Server dynamisch berechnet und
weisen möglicherweise eine andere Semantik auf, die im Suchfilter nicht zulässig ist. Solche Werte führen in dem zuvor genannten Beispiel zu keinem gültigen Ergebnis, und können in IBM HTTP Server nicht
für die Berechtigung verwendet werden.
- Nur Authentifizierung: Verwenden Sie LDAP, um ausschließlich Benutzerkennwörter zu überprüfen.
Sie können die Anweisung Require so verwenden, dass Sie bestimmte Benutzer einschränken, oder
eine einfache Gruppendatei mit AuthGroupFile verwenden.
- Editieren Sie die Konfigurationsdatei ldap.prop. Sollten Sie noch keine Datei ldap.prop definiert haben, können Sie die
Datei ldap.prop.sample verwenden, die mit IBM HTTP Server bereitgestellt wird. Sollten Sie Fragen zu den korrekten Werten haben, wenden
Sie sich an den Administrator Ihres LDAP-Servers. Aktualisieren Sie die folgenden Anweisungen mit Werten, die für Ihre Umgebung gültig sind:
- Geben Sie die Informationen zur Web-Server-Verbindung ein.
- Wenn Sie SSL, LDAPS oder LDAP über SSL verwenden, gehen Sie folgendermaßen vor:
Ergebnisse
Suchvorgänge, die die Anweisung mod_ibm_ldap verwenden, verwalten einen Pool von Serververbindungen, die mit dem Benutzernamen für
ldap.application.dn authentifiziert werden. Die erste Verbindung wird beim Empfang der ersten LDAP-geschützten Anforderung erstellt.
Verbindungen bleiben für eine angegebene Anzahl von Sekunden (ldap.idleConnection.timeout) für nachfolgende
Suchvorgänge mit dieser Verbindung bzw. für Verbindungen für andere Anforderungen geöffnet.
Wenn Sie Protokolle lesen oder einen IP-Trace untersuchen,
sollte die folgende Ereignisabfolge eingetreten sein:
- IBM HTTP
Server wird gestartet.
- Ist LDAP_TRACE_FILE konfiguriert, sind einige Einträge für LDAP_obtain_config enthalten.
- Empfang der ersten Anforderung für die LDAP-geschützte Ressource.
- IBM HTTP Server wird mit dem Benutzernamen für ldap.application.dn und dem in ldap.application.password.stashFile (Anwendungsverbindung) verdeckt gespeicherten Kennwort an LDAP gebunden.
- IBM HTTP Server führt über diese Verbindung eine Suche durch, um den vom Benutzer eingegebenen Benutzernamen oder den Inhalt des Clientzertifikats in einen definierten Namen (Distinguished Name, DN) mit den Einstellungen aus user.*.filter zu übersetzen.
- IBM HTTP Server wird mit der vom Client bereitgestellten Authentifizierung über den Benutzernamen/Kennwort an den LDAP-Server gebunden (Dies ist für den LDAP-Server eine "Benutzerverbindung").
- Wenn für diese Anforderung irgendwelche LDAPRequire-Anweisungen gültig sind, werden Sie von IBM HTTP Server wie vorstehend beschrieben verarbeitet.
- IBM HTTP Server löst die Benutzerverbindung.
- Die Anwendungsverbindung wird für die nächste Anforderung beibehalten.