gpt4 book ai didi

php - 为新的 LDAP 用户设置密码

转载 作者:可可西里 更新时间:2023-11-01 00:58:01 24 4
gpt4 key购买 nike

我一直在尝试用 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 上工作。

最佳答案

首先我按照@ChadSikorra 告诉我的那样做了:我创建了文件夹/文件 C:\OpenLDAP\sysconf\ldap.conf 并添加行 TLS_REQCERT never。然而,这对 ldap_start_tls() 没有帮助,但我们的系统管理员检查了 DC,发现没有安装域 Controller 证书。所以我最终可以通过 ldap_connect("ldaps://mydomaincontroller"); 建立连接,这意味着我可以设置 unicodePwd 属性。

下一个问题是 unicodePwd 的编码。这是要走的路:

$newPassword = "mypassword";
$newPassword = "\"" . $newPassword . "\"";
$newPass = mb_convert_encoding($newPassword, "UTF-16LE");

奇怪的是在AD中添加用户时好像不能设置密码(有办法指正)。相反,您必须在之后设置密码:

$result = ldap_add(...);
$entry = array(
"unicodePwd" => "$newPass",
"pwdLastSet" => 0
);
ldap_modify($connect, $member, $entry);

使用 ldap_add() 设置密码对我不起作用。 pwdLastSet 强制用户在登录后更改密码,$member 是用户的“ID”(例如:CN=johndoe, ou=person, dc=我的公司)。确保在“CN=”之后使用唯一键。

谢谢大家的帮助。

关于php - 为新的 LDAP 用户设置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35658532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com