我使用Apache进行LDAP身份验证。现在我需要知道如何通过PHP登录用户。它甚至可能吗?我是否必须在PHP中进行身份验证才能存储用户名?
答案 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#exposed和http://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']