我可以在使用Apache进行身份验证期间检索addtional LD​​AP对象吗?

时间:2016-07-20 14:45:43

标签: apache .htaccess authentication ldap

我使用.htaccess和Apache v2.4与mod_authnz_ldap强制LDAP身份验证到我们的本地域控制器。以下块工作正常,访问日志还包括userID。

# LDAP stuff
AuthType Basic
AuthName "Validate with User ID"
AuthBasicProvider ldap
AuthLDAPURL "ldap://ldapServer.com:389 DC=global,DC=myCoName,DC=com?sAMAccountName"
AuthLDAPBindDN "myDomain\\ServiceAccountName"
AuthLDAPBIndPassword "ServiceAccountPassword"
require valid-user

使用phpinfo.php脚本,Apache环境变量AUTHENTICATE_SAMACCOUNTNAME设置为userID。

我需要的是还要检索其他用户数据,如全名,电话号码等,或者如果更容易,则返回用户ID的完整记录,而不使用PHP或其他后端。

1 个答案:

答案 0 :(得分:2)

事实证明,答案在Apache文档中给出。出于身份验证的目的,只有列出的第一个属性用于身份验证。在身份验证过程中会获取任何其他(逗号分隔)属性。

LDAPAuthURL修改为:

AuthLDAPURL "ldap://ldapServer.com:389 DC=global,DC=myCoName,DC=com?sAMAccountName,displayName,givenName,sn"

sAMAccountName上进行身份验证,但也会返回dispalyNamegivenName和姓氏sn。然后在以AUTHENTICATE_为前缀的Apache环境中找到这些值。 PHP变量以_SERVER["AUTHENTICATE_*

为前缀

例如,这是我登录时返回的内容:

AUTHENTICATE_SAMACCOUNTNAME al2
AUTHENTICATE_DISPLAYNAME    Lindberg, Alex (Alex)
AUTHENTICATE_GIVENNAME      Alex
AUTHENTICATE_SN             Lindberg

_SERVER["AUTHENTICATE_SAMACCOUNTNAME"] al2 
_SERVER["AUTHENTICATE_DISPLAYNAME"]    Lindberg, Alex (Alex) 
_SERVER["AUTHENTICATE_GIVENNAME"]      Alex 
_SERVER["AUTHENTICATE_SN"]             Lindberg 

可在此处找到属性列表: https://msdn.microsoft.com/en-us/library/ms675090(v=vs.85).aspx