Czy można użyć części identyfikatora URI żądania jako danych wejściowych do Require ldap-group
dyrektywy 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/abc
był 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?
Odpowiedzi:
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?
źródło
Możesz spróbować dodać filtr do parametru AuthLDAPURL: https://httpd.apache.org/docs/2.4/en/mod/mod_authnz_ldap.html#authldapurl
Może coś takiego:
źródło