У меня есть LDAP-аутентификация, работающая с Apache. Теперь мне нужно знать, как я могу получить, что пользователь вошел в систему с PHP. Возможно ли это? Нужно ли выполнять аутентификацию на PHP для хранения имени пользователя?
Я не уверен, что то же самое с 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#exposed и http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html#authldapurl .