Mam uwierzytelnianie LDAP z następującą konfiguracją
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
To działa, jednak muszę wprowadzić wszystkich użytkowników, których chcę uwierzytelnić MySpecificGroup
. Ale na serwerze LDAP skonfigurowałem MySpecificGroup
również grupę MyOtherGroup
zawierającą inną listę użytkowników.
Ale ci użytkownicy MyOtherGroup
nie są uwierzytelnieni, muszę ręcznie dodać ich wszystkich MySpecificGroup
i zasadniczo nie mogę używać zagnieżdżonego grupowania. Korzystam z systemu Windows SBS 2003.
Czy istnieje sposób na skonfigurowanie Apache LDAP w tym celu? Czy jest problem z możliwą nieskończoną rekurencją, a zatem nie jest dozwolony?
źródło
AuthnProviderAlias
na razie. Jeśli nikt nie zaoferuje rozwiązania dla Apache 2.2, nagroda jest twoja :)Poza tym
AuthLDAPSubGroupDepth
, jest to dostępne tylko w Apache 2.4, podczas korzystania z Microsoft AD LDAP możliwe jest autoryzowanie przy użyciu grup zagnieżdżonych przy użyciu reguły dopasowywania LDAP_MATCHING_RULE_IN_CHAIN. Jest to znacznie szybsze niż wyszukiwanie podgrup na kliencie, ponieważ odbywa się to na serwerze DC z mniejszą liczbą zapytań przez sieć.Ciąg
1.2.840.113556.1.4.1941
jest nazywany OIDLDAP_MATCHING_RULE_IN_CHAIN
. Ten identyfikator OID jest przypisywany przez Microsoft do użycia z jego implementacją LDAP (część Active Directory). Nie można go używać z innymi serwerami LDAP. Format do wymiany przez człowieka to:iso(1).member_body(2).us(840).microsoft(113556).ad(1).as_schema(4).LDAP_MATCHING_RULE_IN_CHAIN(1941)
Z dokumentacji Microsoft:
Zobacz też:
źródło
LDAP_MATCHING_RULE_IN_CHAIN
odzyskanie członkostwa w grupie rekurencyjnej i przekazanie go jako nagłówka do serwera zaplecza (przy użyciu Apache jako odwrotnego proxy)?mod_authnz_ldap
nie zapewnia tego. Możesz jednak użyćLDAP_MATCHING_RULE_IN_CHAIN
filtra LDAP w swojej aplikacji. Zobacz: stackoverflow.com/a/34075052/290087Wygląda na to, że jedyną opcją w Apache 2.2 jest wyświetlenie listy każdej grupy uwzględnionej przez główną autoryzowaną grupę.
Powinno to być rozsądne, jeśli grupy zagnieżdżone nie są zbyt skomplikowane.
Przekraczanie domen AD (przy użyciu dwóch serwerów LDAP)
Możesz skonfigurować OpenLDAP z nakładką slapd_meta działającą na twoim serwerze WWW, aby proxy uwierzytelnić.
/etc/ldap/slapd.conf powinien wyglądać mniej więcej tak:
Wówczas Twoja sekcja mod_authnz_ldap wyglądałaby mniej więcej tak:
Będzie to wymagało trochę masowania, aby go uruchomić, ale myślę, że to jest ogólny pomysł.
źródło
Podczas gdy rozwiązanie dostarczone przez @Mircea_Vutcovici działało dla mnie, moją jedyną krytyką jest to, że ludzie mogą się skrzywdzić, gdy zobaczą operatory bitowe.
Na przykład przekażę instalację Apache Bloodhound, która używa Apache HTTPd jako interfejsu użytkownika z uwierzytelnianiem grupy AD, grupie innych programistów. Będą mieli problemy z obsługą operatorów bitowych. Administratorzy oczywiście nie będą aż tak pyszni ... Mam nadzieję.
Biorąc to pod uwagę, mam rozwiązanie, które nie korzysta z operatora bitowego i nie korzysta z wielu definicji grup ldap.
Następująca konfiguracja działa dla mnie:
Kluczową częścią była następująca konfiguracja:
AuthLDAPMaxSubGroupDepth nie działa samo z siebie, ani w połączeniu z AuthLDAPSubgroupAttribute. Dopiero gdy użyłem AuthLDAPSubGroupClass, uwierzytelnianie przeciwko podgrupom zaczęło działać ... przynajmniej dla mnie i mojej sytuacji.
źródło