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

sco*_*ttm 2 php authentication mod-ldap

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

Bri*_*ter 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>
Run Code Online (Sandbox Code Playgroud)

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

<?php
    $userId = $_SERVER['AUTHENTICATE_SAMACCOUNTNAME'];
    echo "User ID: " . $userId;
<?
Run Code Online (Sandbox Code Playgroud)

您可以通过这种方式获取在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.


jos*_*tca 7

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

$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']
Run Code Online (Sandbox Code Playgroud)

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