2011-11-30 123 views
2

我正在嘗試使用PHP對使用LDAP的用戶進行身份驗證。我有我檢查過的用戶的DN是正確的。我也有密碼。這是用戶使用SamAccountName進行身份驗證時的正確密碼。PHP ldap_bind()驗證 - 錯誤無法綁定到服務器:憑據無效?

我希望這是在使用DN進行身份驗證時使用的密碼。 LDAP沒有特定名稱的特定密碼嗎?以下是我使用PHP的ldap_bind()函數進行身份驗證的代碼。我是否正確?

$ldaphost="ldap://somehost.com:3268"; 
$dn = "cn=LastName\, FirstName Dept/Country/ext,OU=Accounts,OU=Location,ou=Division,"; 
$basedn="dc=abc,dc=enterprise"; 

if (!($connect = ldap_connect($ldaphost))) {  
    die ("Could not connect to LDAP server"); 
} 

$ldapbind = ldap_bind($connect, "$dn" . "$basedn", $password); 

if ($ldapbind) { 
    echo "LDAP bind successful..."; 
} else { 
    echo "LDAP bind failed..."; 
} 

結果我從上面的代碼得到的是:

警告:的ldap_bind()[function.ldap綁定]:無法綁定到服務器: 無效憑證LDAP綁定失敗.. 。

從行,其中ldap_bind()調用時:

$ldapbind = ldap_bind($connect, "$dn" . "$basedn", $password); 

無效憑證讓我相信DN或密碼可能存在錯誤。我已經三重檢查了DN,並且據我所知,沒有錯誤。

任何想法?

回答

7

我想你是連接到一個Microsoft域,你可以嘗試域的語法,然後憑據。對於User015在DOMAIN - 域\ user015

+0

賓果!這樣可行!那麼您在ldap_bind()中使用的用戶ID取決於ldap服務器的域的類型?或者服務器的管理員是否可以改變它?因此,在某些使用DN的ldap域中,在其他使用DOMAIN \ user的域上。其他潛在用戶ID是電子郵件地址? – user840930

+0

@ user840930 DOMAIN \ user只能在Microsoft域控制器上使用,LDAP默認是要求(我可能在這裏是錯誤的)完整的DN,我覺得很有趣,因爲這隻在LDAP中可用。 –

+0

@Stephan B請問我可以在哪裏更改此域\用戶?你能幫我嗎? –

相關問題