Как получить информацию о пользователе, прошедшем аутентификацию с помощью Apache mod_ldap? - PullRequest
2 голосов
/ 10 февраля 2010

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

Ответы [ 2 ]

8 голосов
/ 10 февраля 2010

Если вы активируете модуль 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.

7 голосов
/ 10 февраля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...