我正在尝试编写一个函数,允许用户在必须更改密码时重置密码(代码 49 - ERROR_PASSWORD_MUST_CHANGE)。
我询问他们的用户名、当前密码,然后输入新密码并确认新密码。
附注:我注意到当我尝试登录使用 ldap 身份验证的应用程序时,它不允许他们进入。这使我相信 ERROR_PASSWORD_MUST_CHANGE 以某种方式中断了身份验证过程。
为了重置密码,他们需要使用当前密码进行身份验证(以验证他们是该帐户的实际所有者),但身份验证将会失败。
我知道我可以使用管理员帐户来更改密码,但它从不验证用户是否是该帐户的实际所有者,因为它不关心他们当前的密码是什么。
我打算用 php 编写这个,不确定这是否重要,但我正在学习更多有关 ldap 的“陷阱”,任何帮助都将不胜感激。
更新:我找到了“破解”方法来实现这一点。如果 ldap 返回 pwdLastSet 的代码号为 0,则您使用管理员帐户将 pwdLastSet 设置为 -1,然后他们将能够通过 ldap 进行身份验证,以重置其密码。
更新:回答了如何在 php 中做到这一点的问题https://stackoverflow.com/questions/15084506/adldap-user-must-change-password/16109623#16109623