Как получить информацию о пользователе, прошедшем проверку подлинности с помощью Apache mod_ldap?

У меня есть аутентификация LDAP, работающая с Apache. Теперь мне нужно знать, как узнать, какой пользователь вошел в систему с помощью PHP. Это вообще возможно? Нужно ли выполнять аутентификацию в PHP, чтобы сохранить имя пользователя?

2 ответа

Решение

Я не уверен, что то же самое с mod_lsap, но когда вы проходите аутентификацию с использованием Apache, имя пользователя и пароль сохраняются в суперглобальных значениях $_SERVER.

$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']

http://ca.php.net/manual/en/reserved.variables.server.php

Если вы активируете модуль 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 для получения дополнительной информации.

Другие вопросы по тегам