
我用 LDAP 安裝了 Nginx,它可以工作。但我無法理解「binddn」和「binddn_passwd」的目的
ldap_server dc1 {
url ldap://dc1.alexlinux.lan:3268/DC=alexlinux,DC=lan?sAMAccountName?sub?(objectClass=person);
binddn "alexlinux\\comp";
binddn_passwd 123;
group_attribute member;
group_attribute_is_dn on;
require valid_user;
require group "CN=systemtest,OU=Groups,DC=alexlinux,DC=lan";
}
當我打開瀏覽器時,我輸入我的網域登入名稱和密碼。如果沒有這些參數,身份驗證將無法進行。謝謝。
答案1
實際上,有兩種使用 LDAP 進行身份驗證的方法。
- 第一個嘗試使用您在網頁瀏覽器中輸入的使用者名稱和密碼綁定到 LDAP 伺服器(這是 LDAP 的說法,意思是登入 LDAP 伺服器)。如果綁定成功,則使用者名稱和密碼正確,您將登入您的網站。但是,這需要將 LDAP 伺服器配置為允許此類操作,但情況並非總是如此。
- 即使第一種方法不允許,第二種方法也有效。使用此方法,LDAP 用戶端(
nginx
在您的情況下)會作為允許驗證其他使用者的使用者綁定到 LDAP 伺服器,然後使用 Web 瀏覽器中提供的資料來驗證使用者並報告。為此,它需要知道哪個用戶(專有名稱或DN
用 LDAP 來說)以及此綁定應使用哪個密碼。它們在參數binddn
和binddn_passwd
中配置nginx
。
答案2
基於這個github頁。看起來「binddn」是您登入 ldap 伺服器的使用者名,binddn_passwd 是密碼。某些綁定伺服器在向連線顯示資訊之前需要登入。
答案3
Ldap 伺服器需要可區分的使用者名稱(例如 cn=Test User、ou=something、dc=example、dc=org)來驗證使用者身分。但在大多數情況下,用戶更喜歡以「測試用戶」身分登入。因此,要取得使用者記錄的可分辨名稱,用戶端 (nginx) 應連接到 ldap 伺服器並尋找哪個使用者登入屬性(在您的情況下為 sAMAccountName)等於使用者名稱的記錄。如果伺服器允許匿名使用者連接並執行此類搜索,則不需要binddn和binddn_password,但如果伺服器受到保護,則必須提供憑證才能進行搜索。
取得使用者 DN 後(如果搜尋查詢傳回任何結果)用戶端將使用使用者 DN 和使用者密碼在 ldap 伺服器上進行綁定(驗證)。如果成功 - 使用者已通過身份驗證。