【发布时间】:2016-02-26 17:54:37
【问题描述】:
我一直在尝试用 PHP 创建 Windows 用户帐户,这本身没有问题。我唯一不能做的就是将windows用户密码设置为公司标准密码。 我可以创建、更改和删除用户帐户,除了密码之外没有任何问题。每次我创建用户并尝试使用凭据登录时,我得到的只是“用户名或密码错误”。我检查了用户名。
到目前为止我尝试了什么:
-
ldapp_add密码清晰 ($ldaprecord['userPassword'] = "standard";) -
$ldaprecord['userPassword'] = '{MD5}' . base64_encode(pack('H*',md5($newuser_plaintext_password)));就像在给定的示例中一样 php.net - 添加用户后尝试更改密码见this
似乎我可以更改$ldaprecord['userPassword'],但是当我尝试更改ldaprecord['unicodePwd'] 时,服务器不愿意执行我的请求。
哪个是正确的密码?
我没有通过 SSL 连接到 AD。这是我的错吗?如果是这样,为什么我可以删除用户但不能设置他们的密码?
提前致谢。
编辑:
要求系统管理员通过 SSL 建立连接,但他说轻量级目录服务甚至没有安装在 DC 上。在他看来,我直接在 AD 上工作。对此有什么想法吗?
在带有 IIS 的 Windows 2012 R2 上工作。
【问题讨论】:
-
这是 Active Directory 而不是 OpenLDAP,对吗?无论如何,我看到您提到了创建 Windows 用户帐户。如果是这样,是的,需要通过 SSL/TLS 进行加密连接才能更改密码(除非您已将 AD 修改为不需要它,否则不建议这样做)。此外,通常(再次假设这是 AD...)您将使用
unicodePwd属性而不是userPassword。userPassword属性在没有修改的情况下默认不起作用。 -
是的,它是一个 Active Directory。我将尝试通过 SSL 建立 LDAP 连接。困扰我的是,没有 SSL 我无法更改或设置密码,但我可以删除用户。
-
是的,只要您使用密码属性,它就需要 TLS 或 SSL。如果您正在使用 AD,您很可能应该使用
ldap_start_tls($connection)进行加密。在ldap_connect()调用之后直接使用该函数,否则它将不起作用。 -
@ChadSikorra 试过了。 “无法启动 TLS:连接错误”。我该怎么做才能让它运行?在php.net 上找到了一些条目,但它们对我不起作用。在此处使用 IIS 运行 Windows 2012。
-
可能是证书问题 这是 PHP 中 LDAP 和 TLS 的常见问题。对于测试(在运行 PHP 的服务器上)创建文件(和文件夹,如果需要)
C:\OpenLDAP\sysconf\ldap.conf。然后在该文件中添加行TLS_REQCERT never。这基本上告诉它不要验证来自 LDAP 的证书而只是接受它。我不记得在这样做之后是否需要重新启动 IIS。