Apache-2.2
使用 Apache 進行 Active Directory 身份驗證:為什麼我需要使用全名(域中的使用者)?
我們使用 Apache 2.2 對 Active Directory 進行身份驗證。配置如下:
AuthFormLDAPURL "ldap://*.*.*.*:389/DC=domain,DC=com?userPrincipalName,sAMAccountName?sub?(objectClass=*)"
注意:以下所有跟踪均使用 WireShark。
當 CN 等於 sAMAcountMame 名稱時,我定義了使用者 john:
我只能使用 john (sAMAcountMame) 進行身份驗證。請在下面找到 LDAP 綁定請求:
LDAP 綁定響應:
然後,當 CN 不等於 sAMAcountMame 名稱時,我定義了使用者 johnd:
不幸的是,我無法使用 johnd (sAMAcountMame) 進行身份驗證。請在下面找到 LDAP 綁定請求:
LDAP 綁定響應:
我可以使用全名 jonhd@domain.com 進行身份驗證。請在下面找到 LDAP 綁定請求:
LDAP 綁定響應:
問題:
- 當 CN 不等於 sAMAcountMame 時,為什麼我無法使用 sAMAcountMame 進行身份驗證?
- 在這種情況下,為什麼我可以在域中使用 sAMAcountMame 進行身份驗證?
- 我們是否應該建議我們的使用者始終在域中使用 sAMAcountMame 進行身份驗證以防止身份驗證問題?
謝謝你的幫助!
執行 LDAP 簡單綁定時,AD 不會嘗試將傳遞的名稱與
sAMAccountName
不帶任何後綴的屬性進行匹配。但是,它可能會嘗試找到與 的匹配displayName
項,這在第一次測試中對您有用(看起來與 匹配sAMAccountName
,因為這些屬性的值是相同的)。處理 LDAP 簡單綁定時使用的名稱匹配規則的精確描述可以在 Microsoft 文件中找到:http: //msdn.microsoft.com/en-us/library/cc223499.aspx
使用 UPN 可能更可靠,因為
displayName
可能包含一些人類可讀的字元串(例如,一個人的全名)並且不能保證是唯一的。DOMAIN\USERNAME 形式也應該是唯一的,但取決於現在被認為已過時的 NetBIOS 域名。