我使用.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或其他后端。
答案 0 :(得分:2)
事实证明,答案在Apache文档中给出。出于身份验证的目的,只有列出的第一个属性用于身份验证。在身份验证过程中会获取任何其他(逗号分隔)属性。
将LDAPAuthURL
修改为:
AuthLDAPURL "ldap://ldapServer.com:389 DC=global,DC=myCoName,DC=com?sAMAccountName,displayName,givenName,sn"
在sAMAccountName
上进行身份验证,但也会返回dispalyName
,givenName
和姓氏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