Apache-2.2
LDAP 無法執行經過身份驗證的綁定 - 使用 PHP/Apache 的 Windows Server 2008 R2
我在對伺服器執行經過身份驗證的綁定時遇到問題。這些問題似乎不在程式碼中,但可能是伺服器問題。
讓你知道;
- LDAP 在 Apache/PHP 中啟用
- 我以 user@domain.com 身份連接
- 域控制器正在執行 LDAP 並在防火牆中添加一個條目 (Windows Server 2008 R2) 問題可能出在此處,它被設置為 DC,並且預設情況下正在執行 LDAP。我沒有對 LDAP 進行特殊配置
- 我可以執行匿名綁定,但不能執行經過身份驗證的綁定
我可以使用這個腳本匿名綁定;
$ldapconn = ldap_connect("machinename.domain.com") or die("Could not connect to LDAP server."); if ($ldapconn) { // binding anonymously $ldapbind = ldap_bind($ldapconn); if ($ldapbind) { echo "LDAP bind anonymous successful..."; } else { echo "LDAP bind anonymous failed..."; } }
但是,當我嘗試使用此腳本進行經過身份驗證的綁定時,它會失敗。
// Authenticated Bind $ldaprdn = 'username@domain.com'; // ldap rdn or dn $ldappass = 'password'; // associated password // connect to ldap server $ldapconn = ldap_connect("machinename.domain.com") or die("Could not connect to LDAP server."); if ($ldapconn) { // binding to ldap server $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass); // verify binding if ($ldapbind) { echo "LDAP bind successful..."; } else { echo "LDAP bind failed..."; } }
我哪裡錯了?
好的,經過大量調查,我打開了錯誤資訊
ldap_errno()
,ldap_error()
發現它帶回了錯誤“需要強(er)身份驗證”,發現了兩種可能的解決方案;調整組策略設置
- 協商簽名(網路安全:LDAP 客戶端簽名要求)
- 無簽名要求(域控制器:LDAP 伺服器簽名要求)
- 結果:成功綁定,當我輸入錯誤的使用者名或密碼時,它會按預期拋出“無效憑據”。
啟用基於 SSL 的 LDAP (LDAPS)