通过PHP添加用户:LDAP

时间:2011-07-17 20:41:01

标签: php active-directory ldap

我有这段代码:

function makeUser() {
    $info['cn'] = "Test User";
    $info['sn'] = "User";
    $info['mail'] = "test@localhost";
    $info['objectclass'][0] = "Person";
    $info['objectclass'][1] = "User";

    $info['userpassword'] = "{MD5}".base64_encode(pack("H*",md5('Password1!')));
    $info['useraccountcontrol'] = 512;

    var_dump(ldap_add($this->connection, "CN=Test User,OU=Users,DC=domain,DC=local", $info));
}

这给了我这个错误:

  

警告:ldap_add()[function.ldap-add]:添加:服务器不愿意执行

当我遗漏$info['useraccountcontrol'] = 512;部分时,它会添加帐户,但会被禁用..

我从两台服务器上的日志记录中得到了这个:

  

内部事件:LDAP服务器返回错误。

     

其他数据错误值:0000052D:SvcErr:DSID-031A11E5,问题   5003(WILL_NOT_PERFORM),数据0

我的工作:

  • Windows Server 2008 Active Directory(不是R2)& Windows Server 2003
  • PHP 5.3.5
  • 正常的LDAP连接,而不是LDAPS,因为我已经放弃了尝试让它工作..

我该如何理解,用户已停用,并且首次登录时是否必须更改密码?

2 个答案:

答案 0 :(得分:5)

我也有这个问题(甚至通过LDAPS连接)。当我分三个步骤(首先添加帐户,然后设置密码,然后启用帐户),它工作。

可能你可以合并前两个或最后两个步骤,但我没有对此进行测试。

答案 1 :(得分:2)

就Active-directory而言,密码不在'userpassword'中,但在'unicodePwd'中,您在this other Stckoverflow question中有一个示例。我认为您需要使用LDAPS。