Есть ли способ получить пароль из заголовка авторизации HTTP в конфигурации Apache2?
Я обнаружил, что могу получить доступ к заголовку HTTP Authorization с помощью следующего кода
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
К сожалению, я не понимаю, как декодировать его из base64, а затем разделить имя пользователя и пароль.
Конечно, это очень легко сделать вне конфигурации Apache, но мне нужно имя пользователя и пароль внутри конфигурации, чтобы передать их в модуль авторизации LDAP.
На самом деле я хочу сделать что-то вроде этого:
<Directory "C:/my/directory">
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
AuthType Basic
AuthName "Trac"
AuthBasicProvider "ldap"
AuthLDAPURL "ldap://domain.local:3268/DC=domain,DC=local?sAMAccountName?sub?> (objectClass=user)"
AuthLDAPBindDN %{HTTP_USER}@domain.local
AuthLDAPBindPassword %{HTTP_PASSWORD}
AuthzLDAPAuthoritative off
Require valid-user
</Directory>
Мне это нужно, потому что наш сервер LDAP не принимает анонимные запросы.
1 ответ
По сути, вы должны создать выделенного пользователя LDAP для авторизации.
Связанный с заголовком HTTP_AUTHORIZATION, проверьте RFC2617 http://www.ietf.org/rfc/rfc2617.txt
Это зависит от того, какую схему аутентификации вы используете. Из базовой схемы вы можете декодировать USERNAME и PASSWORD, но из другой, возможно, это невозможно (NTLM).