2016-11-22 78 views
0

我試圖使用LDAP user password change code但我被困在一個步驟中ldap_modify拋出LDAP錯誤:不能得到ldap_modify工作

1 - Operations error

首先,我認爲密碼加密方法是不正確的,但即使代碼

$rootdn = "cn=ldap_manager,dc=mycompany,dc=local"; 
    $rootpwd = "mysecretkeys"; 
    $r = ldap_bind($con,$rootdn,$rootpwd); 

    $entry = array(); 
    $entry["givenName"] = "BabaGanush"; 

    if ($r = ldap_modify($con,$user_dn,$entry) === false){ 
    $error = ldap_error($con); 
    $errno = ldap_errno($con); 
    $message[] = "E201 - Please contact the administrator."; 
    $message[] = "$errno - $error"; 
    } else { 
    $message[] = "Name was changed"; 
    } 

不工作(獲得相同的錯誤#1)。

我曾嘗試的rootdn所有可能的組合,但使用ldap_manager

$rootdn = "CN=users,DC=mycompany,DC=local"; 

    $username = 'ldap_mamanger'; 
    $domain = 'mycompany'; 

    $rootdn = $username; 
    $rootdn = $username.'@'.$domain; 
    $rootdn = $domain.'\\'.$username; 
    $rootdn = "uid=$username,cn=users,dc=$domain,dc=local"; 
    $rootdn = "uid=$username,dc=$domain,dc=local"; 
    $rootdn = "uid=$username,dc=local"; 
    $rootdn = "uid=$username,dc=$domain"; 

時當$ldaprdn = $domain.'\\'.$username;工作正常進行定期AD用戶(可以綁定)

dsquery user -name ldap*回報

"CN=ldap_manager,CN=Users,DC=mycompany,DC=local" "CN=ldap_user,CN=Users,DC=mycompany,DC=local"

無法獲得綁定

任何線索都可能是錯誤的?

+0

你有足夠的AD權限修改記錄嗎? – RamRaider

+0

@RamRaider是的 - 我知道。當我查看我的代碼時,我不確定'$ rootdn'的值是否正確 – JackTheKnife

+0

使用'dsquery'來快速找到正確的根dn – RamRaider

回答

1

就我所見,您正試圖修改完整的條目。這意味着,ldap_modify將用新內容替換位於給定DN下的當前內容。並且我確定有一些字段是空的,當您將當前條目替換爲僅包含給定名稱的條目時,需要填寫這些字段。

因此,無論是獲取當前條目,並在該結果中替換有問題的值,或者您可能想看看ldap_mod_replace

+0

切換到'ldap_mod_replace'。現在我可以用'ldap_manager'綁定,但最終的結果是一個錯誤:'53 - 服務器不願意執行'這與我的問題無關。無論如何,我比以前更接近這個釘子。 – JackTheKnife