Apache-2.2

使用 Apache 進行 Active Directory 身份驗證:為什麼我需要使用全名(域中的使用者)?

  • May 5, 2013

我們使用 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 綁定響應:

在此處輸入圖像描述

問題:

  1. 當 CN 不等於 sAMAcountMame 時,為什麼我無法使用 sAMAcountMame 進行身份驗證?
  2. 在這種情況下,為什麼我可以在域中使用 sAMAcountMame 進行身份驗證?
  3. 我們是否應該建議我們的使用者始終在域中使用 sAMAcountMame 進行身份驗證以防止身份驗證問題?

謝謝你的幫助!

執行 LDAP 簡單綁定時,AD 不會嘗試將傳遞的名稱與sAMAccountName不帶任何後綴的屬性進行匹配。但是,它可能會嘗試找到與 的匹配displayName項,這在第一次測試中對您有用(看起來與 匹配sAMAccountName,因為這些屬性的值是相同的)。

處理 LDAP 簡單綁定時使用的名稱匹配規則的精確描述可以在 Microsoft 文件中找到:http: //msdn.microsoft.com/en-us/library/cc223499.aspx

使用 UPN 可能更可靠,因為displayName可能包含一些人類可讀的字元串(例如,一個人的全名)並且不能保證是唯一的。DOMAIN\USERNAME 形式也應該是唯一的,但取決於現在被認為已過時的 NetBIOS 域名。

引用自:https://serverfault.com/questions/504718