2016-11-22 98 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