Apache-2.2

LDAP 無法執行經過身份驗證的綁定 - 使用 PHP/Apache 的 Windows Server 2008 R2

  • April 10, 2013

我在對伺服器執行經過身份驗證的綁定時遇到問題。這些問題似乎不在程式碼中,但可能是伺服器問題。

讓你知道;

  • 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)

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