使用PHP更改密码或在LDAP中添加用户

时间:2016-06-10 16:53:49

标签: php ldap openldap password-encryption change-password

自我的LDAP服务器最近更新(使用运行DSM 6的Synology NAS上的Directory Server v2.1-2428,最新的颠覆)后,我无法使用PHP更改密码(或包含密码的新用户)。

在更新之前,我使用了带有userPassword属性的PHP ldap_add或ldap_mod。但是,现在我在尝试创建新的userPassword时收到错误消息Warning: ldap_add(): Add: Constraint violation

当通过NAS上的管理GUI创建新用户时,我可以查找userPassword条目,该条目在数据库中显示如下(稍微修改了隐私):{crypt}$6$e49q9SvU$.pSl1C8Ew6WTu24yipUI8kjx7qv2GxWhKAUOBmuAVeRmJ1JV/WvWriVYZJeDDtBxekeepatdaKl0ulQdjsmCP.

这意味着数据库接受SSHA-512密码条目吗?

我尝试添加新密码:

  1. 添加与上面显示的完全相同的密码哈希作为userPassword - >约束违规错误
  2. 尝试在NAS源代码中查找密码算法。这揭示了以下一行:rootpw {CRYPT}$1$CL$0fRYicA9KsmHaiV1SRj5q/。 简单地使用它作为新密码也不起作用。
  3. 查找一个不同的PHP函数,就像Linux命令ldappasswd的等价物一样,但这似乎不适用于PHP。
  4. 当然我更喜欢使用SSHA-512之类的正确哈希/加密机制,但我不确定Directory Server的内容和内容是什么。

    我真的希望有人能让我更进一步!如果我要进一步澄清事情,请告诉我。

2 个答案:

答案 0 :(得分:0)

尝试更改密码时的Constraint Violation似乎是Directory Server密码策略实施。 Directory Server日志应包含有关错误的更多详细信息,但可能已将策略设置为拒绝已使用的密码(如最后3个密码)。 Directory Server密码策略可以对密码强制执行许多检查和约束:长度,不重用,字符集的变化,没有简单的单词...... 您可能需要查看Synology目录服务器文档或发行说明,以获取默认密码策略的详细信息。

答案 1 :(得分:0)

最后,解决方案是让Synology一遍又一遍地帮助寻找解决方案。他们在更新到v2.1-2428之前将密码策略更改回版本,现在再次运行。

如果有其他可用解决方案与最新版本的OpenLDAP兼容,我们将非常感谢分享。