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