使用ldap / php获取登录用户的电子邮件地址

时间:2014-08-25 18:32:37

标签: php ldap

我在htaccess文件中使用AuthLDAPURL来验证用户身份。有没有办法在用户使用PHP登录后抓取用户的电子邮件地址?

1 个答案:

答案 0 :(得分:3)

您可能可以使用AuthLDAPRemoteUserAttribute。如文档中所述(强调我的):

  

如果设置了此指令,则为REMOTE_USER环境的值   变量将设置为指定属性的值。使   确保该属性包含在属性列表中   AuthLDAPUrl定义,否则该指令将无效。   该指令(如果存在)优先于   AuthLDAPRemoteUserIsDN。 如果需要,此指令非常有用   人们使用电子邮件地址登录网站,但后端   应用程序需要用户名作为用户标识

这与您描述的内容相反,但您可以尝试指定要返回的电子邮件地址字段。

否则,在Apache移交给PHP之后,您可以使用PHP LDAP functions连接到服务器并根据提供的REMOTE_USER变量查询电子邮件。使用Active Directory这很简单,就像这样(它会因LDAP提供商的不同而不同):

$ldap = ldap_connect('ldap://yourserver'); // use 'ldaps' if you can!
ldap_bind($ldap, 'username', 'password');
$attributes = array('mail');
$search = ldap_search($ldap, 'base_dn', 'search_filter', $attributes);
$data = ldap_get_entries($ldap, $search);

$data应该是一个带有电子邮件地址的数组。