2013-02-25 57 views
2

我正在嘗試使用PHP來驗證我們的Active Directory中使用LDAP的身份驗證。ldap_bind()不起作用

我知道一個有效的用戶名和密碼,我們的域和LDAP服務器。

$ldapconn = ldap_connect($ldapserver)工作,它返回'ldap鏈接'資源。

但是當我撥打ldap_bind($ldapconn, $ldaprdn, $password)它失敗。

我已經嘗試了很多$ldaprdn的設置,但找不到有效的設置。一些例子:

$ldaprdn = $username;

$ldaprdn = $username.'@'.$domain;

$ldaprdn = $domain.'\\'.$username;

$ldaprdn = "uid=$username,cn=users,dc=$ldapserver,dc=$domain,dc=com"

$ldaprdn = "uid=$username,dc=$domain,dc=com"

$ldaprdn = "uid=$username,dc=com"

$ldaprdn = "uid=$username,dc=$domain"

沒有什麼效果,ldap_error($ldapconn)總是返回「無效憑證」。

登錄名和密碼顯然是正確的,我可以在Windows上登錄。任何想法我可以使用?

+0

我們的AD域名就像「mydomain.intranet」,它應該是像dc = intranet而不是dc = com的東西嗎?或dc = mydomain,dc =內部網?我明天會嘗試這些 – Hikari 2013-02-25 20:46:50

回答

2

調試這種事情真的很棘手。如果有權訪問,請使用LDAP服務器上的日誌,或嘗試諸如http://jxplorer.org/之類的內容以獲取有關您嘗試連接的用戶的實際dn /上下文的更好信息。你可能有一部分缺失或不完全正確。另外,如果您的用戶名/密碼的字符需要在命令行中轉義,請確保您沒有在PHP腳本中轉義它們。

+0

感謝您的回覆。他們不需要轉義它的字母數字,我打印'$ ldaprdn',這是預期的。我看到一些例子,它真的是username @ domain,我開始認爲它與apache/php模塊有關。 – Hikari 2013-02-25 16:14:29