Grupy użytkowników Apache mod_auth_kerb i LDAP

12

Zastanawiałem się nad wdrożeniem mod_auth_kerbna naszych wewnętrznych serwerach internetowych, aby umożliwić logowanie jednokrotne. Jedynym oczywistym problemem, jaki widzę, jest to, że jest to podejście „wszystko albo nic”, albo wszyscy użytkownicy domeny mogą uzyskać dostęp do witryny, albo nie.

Czy można połączyć mod_auth_kerbz czymś takim jak mod_authnz_ldapsprawdzenie członkostwa w grupie w określonej grupie w LDAP? Zgaduję, że KrbAuthoritativeopcja ma coś z tym wspólnego?

Ponadto, jak rozumiem, moduł ustawia nazwę użytkownika na username@REALMpo uwierzytelnieniu, ale oczywiście w katalogu użytkownicy są zapisani tylko jako nazwa użytkownika. Ponadto niektóre obsługiwane przez nas strony wewnętrzne, takie jak trac, mają już profil użytkownika powiązany z każdą nazwą użytkownika. Czy istnieje sposób na rozwiązanie tego problemu, być może poprzez usunięcie fragmentu królestwa po uwierzytelnieniu?

Kamil Kisiel
źródło
Tylko pytanie dotyczące implementacji, czy używasz Windows ADS dla dziedziny Kerberos czy innej implementacji?
Jeremy Bouse
Apple OpenDirectory, który jest dostarczany z MIT Kerberos v5
Kamil Kisiel
Ok ... Nie pracowałem wcześniej z Apple OpenDirectory. Udało mi się zmusić Apache do uwierzytelnienia przy użyciu NTLM w stosunku do Windows ADS przy użyciu poświadczeń stacji roboczej, a następnie ograniczenia do określonych grup.
Jeremy Bouse
Bez usuwania domeny z nazwy użytkownika można użyć alternatywnego atrybutu w zapytaniu LDAP do wyszukania encji użytkownika, na przykład atrybutu „userPrincipalName” w Ms ActiveDirectory.
Yves Martin

Odpowiedzi:

13

W mod_auth_kerb 5.4 można teraz usunąć domenę z REMOTE_USER za pomocą następującej dyrektywy konfiguracyjnej:

KrbLocalUserMapping On

styro
źródło
Wow, wygląda na to, że został wydany w 2008 roku, ale nie wspomniał o tym (wersja lub parametr) na swojej stronie internetowej.
Kamil Kisiel
7

Chodzi o sedno separacji authn / authz w wersji 2.2, którą można uwierzytelniać za pomocą jednego mechanizmu, a autoryzować za pomocą innego. Uwierzytelnianie zapewnia ustawienie REMOTE_USER, do którego możesz następnie użyć authz_ldap. Ponadto authn_ldap wyszukuje następnie użytkownika (konwersję REMOTE_USER na nazwę wyróżniającą, jeśli została znaleziona, przy użyciu kryteriów wyszukiwania, które należy określić - np. Wyszukiwanie CN). Następnie po znalezieniu nazwy wyróżniającej można określić wymagania dotyczące obiektu LDAP. Na przykład jeśli wszyscy użytkownicy uzyskujący dostęp do zasobu muszą znajdować się w tej samej jednostce organizacyjnej, należy określić

wymagają ldap-dn ou = Menedżerowie, o = Firma

Martin v. Löwis
źródło
Czy można zmodyfikować zmienną REMOTE_USER przed przekazaniem jej do etapu autoryzacji? Na przykład, aby usunąć część REALM nazwy użytkownika Kerberos w celu wyszukiwania w bazie danych LDAP?
Kamil Kisiel
Nie za pomocą konfiguracji. Jest to jednak stosunkowo łatwe w kodzie źródłowym modułu Apache. Poszukaj przydziałów do żądania-> użytkownika i dostosuj je; następnie przebuduj moduł apxs2 -c. OTOH, może być łatwiej umieścić nazwy Kerberos w LDAP pod osobnym atrybutem i pozwolić modułowi ldap przeszukać użytkownika według tego atrybutu.
Martin v. Löwis
2

Stabilna Debian jest teraz dostarczana z wersją 5.4 mod_auth_kerb .

Jeśli utkniesz ze starszą wersją, ta strona wyjaśnia, w jaki sposób można używać mod_map_user w połączeniu z mod_auth_kerb i mod_authnz_ldap.

jcharaoui
źródło