3

我的 OpenLDAP 中有一组用户,我希望从他们那里获取一些信息,例如“cn”和“userPassword”。

但是,当我检索这些详细信息时,即使在我的 LDAP 服务器中设置了密码,密码也不是纯文本。

任何想法如何解决这个问题?

4

2 回答 2

7

userPassword 通常以散列形式存储

userPassword: {hasAlgorithm}Hashed value

例子 :

userPassword: {SSHA}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3

userPassword属性允许有多个值,并且每个值可以以不同的形式存储。在身份验证期间,slapd 将遍历这些值,直到找到与提供的密码匹配的值,或者直到它用完要检查的值。存储方案存储为值的前缀

你可以有 :

密码

该方案使用操作系统的 crypt(3) 散列函数。它通常会生成传统的 Unix 风格的 13 字符散列,但在使用 glibc2 的系统上,它也可以生成更安全的 34 字节 MD5 散列

MD5

该方案简单地获取密码的 MD5 哈希值并将其存储为 base64 编码形式

贴片5

这通过添加盐(随机数据,这意味着给定的明文密码有许多可能的表示)改进了基本的 MD5 方案。例如,这两个值代表相同的密码

SSHA

这是 SHA 方案的加盐版本。被认为是slapd支持的最安全的密码存储方案

结论

大多数情况下,您不必恢复密码,您只需根据用户在登录表单中提供的密码计算哈希值,并将其与userPassword.

于 2011-05-09T15:33:54.330 回答
0

您的配置有一个密码策略覆盖,该覆盖配置为散列纯文本密码。 olcPPolicyHashCleartext: TRUE或 ppolicy_hash_cleartext。删除它们,它应该开始以纯文本形式存储密码。

也就是说,存储纯文本密码并不是一个好主意。至少要对其进行加密,以使其不会被不经意的观察者轻易逆转。不,ROT13 或 base64 编码不算在内。

于 2011-08-01T14:55:04.623 回答