Dynamicznie uwierzytelniać Apache za pomocą LDAP na podstawie ciągu żądania?

11

Czy można użyć części identyfikatora URI żądania jako danych wejściowych do Require ldap-groupdyrektywy mod_authnz_ldap ?

Próbuję dynamicznie sprawdzać dostęp do wielu różnych katalogów projektów, wszystkie pod http://testserver.com/projects/ , tak aby użytkownik uzyskujący dostęp /projects/abcbył sprawdzany pod kątem członkostwa cn=abc,ou=groups,dc=test. Idealnie chciałbym to zrobić bez tworzenia osobnej dyrektywy lokalizacyjnej dla każdego projektu, ponieważ może być ich setki.

Wymyśliłem to, które ilustruje ogólną koncepcję, ale które nie działa (nazwa_projektu nie pobiera rzeczywistej zawartości zmiennej):

<Location /projects>
    SetEnvIf Request_URI "/projects/([-a-z0-9A-Z_]+)/" project_name=$1

    AuthType Basic
    AuthBasicProvider ldap
    AuthName "Restricted Resource - SVN (LDAP)"
    AuthLDAPURL "ldap://127.0.0.1:389/dc=test?uid"
    AuthLDAPGroupAttributeIsDN off
    AuthLDAPGroupAttribute memberUid
    Require ldap-group cn=%{project_name},ou=groups,dc=test
</Location>

Wsparcie?

Chris
źródło
Niemożliwe. Najlepiej jest spróbować czegoś takiego jak mod_auth_external .
h0tw1r3

Odpowiedzi:

0

Uważam, że Apache 2.4 ma w tej dziedzinie więcej do zaoferowania niż 2.2 ... warto się przyjrzeć.

Alternatywnie, warto rozważyć zbudowanie własnego niestandardowego modułu; nie jest tak przerażające, jak się wydaje - zakładając, że czujesz się komfortowo w C.

Podobnie, czy mod_perl nie oferuje wiele w rozszerzaniu Apache'a za pomocą hooków?

Cameron Kerr
źródło