Ich arbeite mit LDAP-Authentifizierung mit dem folgenden Setup
AuthName "whatever"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPUrl "ldap://server/OU=SBSUsers,OU=Users,OU=MyBusiness,DC=company,DC=local?sAMAccountName?sub?(objectClass=*)"
Require ldap-group CN=MySpecificGroup,OU=Security Groups,OU=MyBusiness,DC=company,DC=local
Das funktioniert, aber ich muss alle Benutzer angeben, bei denen ich mich authentifizieren möchte MySpecificGroup
. Aber auf LDAP-Server habe ich konfiguriert, dass MySpecificGroup
auch die Gruppe MyOtherGroup
mit einer anderen Liste von Benutzern enthält.
Diese Benutzer MyOtherGroup
sind jedoch nicht authentifiziert. Ich muss sie manuell hinzufügen MySpecificGroup
und kann die verschachtelte Gruppierung im Grunde nicht verwenden. Ich verwende Windows SBS 2003.
Gibt es eine Möglichkeit, Apache LDAP dafür zu konfigurieren? Oder gibt es ein Problem mit einer möglichen unendlichen Rekursion und somit nicht erlaubt?
quelle
AuthnProviderAlias
. Wenn niemand eine Lösung für Apache 2.2 anbietet, liegt die Prämie bei Ihnen :)Außerdem
AuthLDAPSubGroupDepth
ist dies nur in Apache 2.4 verfügbar. Wenn Sie Microsoft AD LDAP verwenden, können Sie die Autorisierung mithilfe verschachtelter Gruppen mithilfe der Übereinstimmungsregel LDAP_MATCHING_RULE_IN_CHAIN durchführen. Dies ist viel schneller als das Durchsuchen von Untergruppen auf dem Client, da dies auf dem DC-Server mit weniger Abfragen über das Netzwerk erfolgt.Die Zeichenfolge
1.2.840.113556.1.4.1941
ist eine OID, die aufgerufen wirdLDAP_MATCHING_RULE_IN_CHAIN
. Diese OID wird von Microsoft zur Verwendung mit der LDAP-Implementierung (Teil von Active Directory) zugewiesen. Sie können es nicht mit anderen LDAP-Servern verwenden. Das vom Menschen redeable Format ist:iso(1).member_body(2).us(840).microsoft(113556).ad(1).as_schema(4).LDAP_MATCHING_RULE_IN_CHAIN(1941)
Aus der Microsoft-Dokumentation:
Siehe auch:
quelle
LDAP_MATCHING_RULE_IN_CHAIN
rekursive Gruppenmitgliedschaft abzurufen und als Header an einen Back-End-Server zu übergeben (mit dem Apache als Reverse-Proxy)?mod_authnz_ldap
bietet dies nicht. Sie können jedochLDAP_MATCHING_RULE_IN_CHAIN
LDAP-Filter in Ihrer Anwendung verwenden. Siehe: stackoverflow.com/a/34075052/290087Es sieht so aus, als ob Ihre einzige Option in Apache 2.2 darin besteht, jede Gruppe aufzulisten, die von Ihrer autorisierten Hauptgruppe aufgenommen wurde.
Dies sollte sinnvoll sein, wenn Ihre verschachtelten Gruppen nicht zu kompliziert sind.
Crossing AD Domains (mit zwei LDAP-Servern)
Sie können OpenLDAP mit dem Overlay slapd_meta einrichten, das auf Ihrem Webserver ausgeführt wird, um Ihre Authentifizierung als Proxy zu verwenden.
/etc/ldap/slapd.conf sollte ungefähr so aussehen:
Dann würde Ihre Zeilengruppe mod_authnz_ldap ungefähr so aussehen:
Dies erfordert einige Massagen, um es zum Laufen zu bringen, aber ich denke, das ist die allgemeine Idee.
quelle
Während die von @Mircea_Vutcovici bereitgestellte Lösung für mich funktioniert hat, ist mein einziger Kritikpunkt, dass die Leute möglicherweise zimperlich werden, wenn sie bitweise Operatoren im Einsatz sehen.
Zum Beispiel übergebe ich eine Apache Bloodhound-Installation, die Apache HTTPd als Front-End mit AD-Gruppenauthentifizierung verwendet, an eine Gruppe von Mitentwicklern. Sie werden Probleme mit bitweisen Operatoren haben. Admins werden natürlich nicht so zimperlich sein ... Ich hoffe.
Davon abgesehen habe ich eine Lösung, die nicht den bitweisen Operator verwendet und die nicht mehrere LDAP-Gruppendefinitionen verwendet.
Die folgende Konfiguration funktioniert für mich:
Der kritische Teil war die folgende Konfiguration:
AuthLDAPMaxSubGroupDepth funktioniert weder für sich noch in Verbindung mit AuthLDAPSubgroupAttribute. Erst als ich AuthLDAPSubGroupClass verwendete, funktionierte die Authentifizierung für Untergruppen ... zumindest für mich und meine Situation.
quelle