简体   繁体   English

无法使ldap_modify工作

[英]Cannot get ldap_modify to work

I'm trying to use LDAP user password change code but I have stuck on a step where ldap_modify throwing LDAP error: 我正在尝试使用LDAP用户密码更改代码,但是我停留在ldap_modify抛出LDAP错误的步骤上:

1 - Operations error 1-操作错误

First I thought that password encryption method is not correct but even code 首先,我认为密码加密方法不正确,甚至是代码

  $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";
  }

is not working (getting the same Error #1). 无法正常工作(获得相同的错误#1)。

I have tried all possible combinations for rootDN but cannot get bind when used ldap_manager 我已经尝试了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";

when $ldaprdn = $domain.'\\\\'.$username; $ldaprdn = $domain.'\\\\'.$username; works fine for regular AD user (can bind) 适用于普通AD用户(可以绑定)

dsquery user -name ldap* returns dsquery user -name ldap*返回

"CN=ldap_manager,CN=Users,DC=mycompany,DC=local" "CN=ldap_user,CN=Users,DC=mycompany,DC=local" “ CN = ldap_manager,CN =用户,DC =我的公司,DC =本地”“ CN = ldap_user,CN =用户,DC =我的公司,DC =本地”

Any clue what can be wrong? 有什么线索可能是错误的吗?

As far as I see it, you are trying to modify a complete entry . 据我所知,您正在尝试修改完整条目 That means, ldap_modify replaces the current content located under the given DN with the new content. 这意味着, ldap_modify用新内容替换位于给定DN下的当前内容。 And I'm sure there are some fields that are left empty shich are required when you replace the current entry with one that contains only a givenName. 而且我敢肯定,当您将当前条目替换为包含给定名称的条目时,某些字段将留空。

So either fetch the current entry and replace the value in question within that result or you might want to have a look at ldap_mod_replace . 因此,要么获取当前条目并在结果中替换有问题的值,要么您可能要看一下ldap_mod_replace

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM