2010-02-10 3 views
2

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

ответ

7

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

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

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

+1

хорошо, то, что работает для ldap тоже! :) – scottm

8

Если активировать модуль mod_authnz_ldap и настроить раздел как это:

<Directory /var/www/yoursite/> 
    AuthName "LDAP Secured" 
    AuthType Basic 
    AuthLDAPUrl "ldap://your.ldap.server:389/dc=example,dc=com?sAMAccountName" 
    AuthLDAPBindDN "[email protected]" 
    AuthLDAPBindPassword "secret" 
    AuthBasicProvider ldap 
    AuthzLDAPAuthoritative off 
    Require valid-user 
</Directory> 

Затем в PHP код, который вы можете получить идентификатор пользователя, который был использован войти в систему как это:

<?php 
    $userId = $_SERVER['AUTHENTICATE_SAMACCOUNTNAME']; 
    echo "User ID: " . $userId; 
<? 

Любой атрибут LDAP, указанный в AuthL Директива DAPUrl может быть получена таким образом (прикрепите ее к 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 для получения дополнительной информации.

Смежные вопросы

 Смежные вопросы