LDAP - windows / xampp(php更改密码) - 不显示userPassword属性

时间:2017-07-17 13:52:39

标签: php windows apache xampp ldap

我创建了一个php脚本(使用XAMPP服务器和php_ldap.dll库)来更改AD用户密码(我正在使用管理员帐户进行身份验证):

    $server         = "ldaps://xx.xx.xx.xx";
    $dn             = "dc=domainname,dc=com";
    $port           = 636;
    ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
    $con = ldap_connect($server, $port);  

    ldap_set_option($con, LDAP_OPT_REFERRALS, 0);
    ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3);

    $bind = ldap_bind($con, 'CN=Admin,CN=Users,DC=DOMIAN,DC=COM', 'password');

    $user_search = ldap_search($con,$dn,'(sAMAccountName='.$user.')');
    $user_get = ldap_get_entries($con, $user_search);

    $user_entry = ldap_first_entry($con, $user_search);
    $user_dn = ldap_get_dn($con, $user_entry);

    $user           = 'validuser';
    $oldPassword    = 'oldpass';
    $newPassword    = 'newpass';

    $encoded_newPassword = "{SHA}" . base64_encode( pack( "H*", sha1( $newPassword ) ) );

    /* Change the password */
    $entry = array();
    $entry["userPassword"] = "$encoded_newPassword";

    if (ldap_modify($con,$user_dn,$entry) === false){
        $error = ldap_error($con);
        $errno = ldap_errno($con);
        echo "$errno - $error";
    } else {
        echo "yes";
    }

另外,我在C:\ OpenLDAP \ sysconf中创建了一个ldap.conf:

TLS_REQCERT never

但是ldap_modify / ldap_mod_replace函数返回 TRUE (“yes”)消息。密码更改测试使用我自己的用户帐户,但仍然使用相同的密码。

我怀疑是 userPassword 属性,因为当我从用户那里获得ldap_get_entries时,我看不到这个属性,但是如果我拥有管理员帐户的“所有权限”,为什么不能看密码attr?我需要更多特权吗?或者我在LDAP / Apache中需要什么样的配置?

提前致谢

0 个答案:

没有答案