Как получить информацию о пользователе, прошедшем проверку подлинности с помощью Apache mod_ldap?
У меня есть аутентификация LDAP, работающая с Apache. Теперь мне нужно знать, как узнать, какой пользователь вошел в систему с помощью PHP. Это вообще возможно? Нужно ли выполнять аутентификацию в PHP, чтобы сохранить имя пользователя?
2 ответа
Я не уверен, что то же самое с mod_lsap, но когда вы проходите аутентификацию с использованием Apache, имя пользователя и пароль сохраняются в суперглобальных значениях $_SERVER.
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']
Если вы активируете модуль mod_authnz_ldap и сконфигурируете свой раздел следующим образом:
<Directory /var/www/yoursite/>
AuthName "LDAP Secured"
AuthType Basic
AuthLDAPUrl "ldap://your.ldap.server:389/dc=example,dc=com?sAMAccountName"
AuthLDAPBindDN "ADUser@ADDomain.local"
AuthLDAPBindPassword "secret"
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
Require valid-user
</Directory>
Затем в своем PHP-коде вы можете получить идентификатор пользователя, который использовался для входа в систему следующим образом:
<?php
$userId = $_SERVER['AUTHENTICATE_SAMACCOUNTNAME'];
echo "User ID: " . $userId;
<?
Любой атрибут LDAP, который вы указываете в директиве AuthLDAPUrl, может быть получен таким образом (префикс его с AUTHENTICATE_, а затем добавьте имя атрибута в верхнем регистре). Вы можете добавить больше атрибутов, разделяя их запятыми, но только первый из них будет использоваться для аутентификации. См. http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html и http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html для получения дополнительной информации.