我有使用 Apache 的 LDAP 身份验证。现在我需要知道如何获取使用 PHP 登录的用户。甚至可能吗?我是否必须在 PHP 中进行身份验证才能存储用户名?
问问题
8456 次
2 回答
9
如果您激活 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。
于 2010-02-10T19:46:02.280 回答
7
我不确定它是否与 mod_lsap 相同,但是当您使用 Apache 进行身份验证时,用户名和密码存储在 $_SERVER 的超全局变量中。
$_SERVER['PHP_AUTH_USER']
$_SERVER['PHP_AUTH_PW']
于 2010-02-10T18:51:30.537 回答