如何检索使用Apache的mod_ldap进行身份验证的用户的用户信息?

时间:2010-02-10 17:43:18

标签: php authentication mod-ldap

我使用Apache进行LDAP身份验证。现在我需要知道如何通过PHP登录用户。它甚至可能吗?我是否必须在PHP中进行身份验证才能存储用户名?

2 个答案:

答案 0 :(得分: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 "ADUser@ADDomain.local"
    AuthLDAPBindPassword "secret"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    Require valid-user
</Directory>

然后在您的PHP代码中,您可以获得用于登录的用户ID,如下所示:

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

您可以通过这种方式获取在AuthLDAPUrl指令中指定的任何LDAP属性(使用AUTHENTICATE_作为前缀,然后以全部大写形式附加属性名称)。您可以通过用逗号分隔它们来添加更多属性,但只有第一个属性将用于身份验证。有关详细信息,请参阅http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html#exposedhttp://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html#authldapurl

答案 1 :(得分:7)

我不确定它是否与mod_lsap相同,但是当您使用Apache进行身份验证时,用户名和密码将存储在$ _SERVER的超级全局中。

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

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