我正在尝试编写一个闪亮的php服务,允许用户更改其密码。 我来使用ldap_modify函数。一切正常,我传递了dn和新的用户密码(或其哈希),用户可以在以后成功登录。
问题是该用户分配了密码策略,禁止密码长度< 2.将此密码(或散列)传递给ldap_modify后,我没有错误,异常等等。
为什么不根据分配的密码策略检查密码?
作为临时解决方案,我可以手动阅读政策录入和检查长度......
答案 0 :(得分:0)
有一个名为ldappasswd
的命令行工具(在某些名为slappasswd
IIRC的linux-distros上)应该用于生成密码哈希。此工具IIRC根据为给定用户设置的密码策略验证输入的密码。
当您手动更改密码值时,LDAP-Server无法检查它,因为它是与所有其他属性一样的属性,因此您可以在不干扰服务器的情况下对其进行更改。当您将哈希设置为值时,LDAP-Server无法知道密码是否与密码策略的指令匹配,因为它实际上从未实际看到密码处于未散列状态。因此,在哈希密码之前,您必须自己检查政策。
答案 1 :(得分:0)
解决方案:所以问题是我正在测试的策略将属性pwdCheckQuality
设置为0,这禁用了所有检查...第二个问题是LDAP中的管理员用户忽略了密码策略 - 我不得不做所有的测试简单用户