我的OpenLDAP中有一组用户,我希望从中获取一些信息,例如“cn”和“userPassword”.
但是,当我检索这些详细信息时,密码不是纯文本,即使它在我的LDAP服务器中设置为此密码.
任何想法如何解决这个问题?
解决方法:
userPassword通常以散列形式存储
userPassword: {hasAlgorithm}Hashed value
示例:
userPassword: {SSHA}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3
允许userPassword属性具有多个值,并且每个值可以以不同的形式存储.在身份验证期间,slapd将遍历这些值,直到找到与提供的密码匹配的值,或者直到它用完要检查的值.存储方案存储为值的前缀
你可以有 :
CRYPT
此方案使用操作系统的crypt(3)哈希函数.它通常会生成传统的Unix风格的13个字符哈希,但在具有glibc2的系统上,它还可以生成更安全的34字节MD5哈希
MD5
此方案只需获取密码的MD5哈希值并将其存储为base64编码形式
SMD5
这通过添加盐(随机数据,这意味着存在给定明文密码的许多可能表示)来改进基本MD5方案.例如,这两个值都表示相同的密码
SSHA
这是SHA方案的盐渍版本.它被认为是slapd支持的最安全的密码存储方案
结论
大多数情况下,您不必恢复密码,您只需要从登录表单中的用户提供的密码计算哈希值,并将其与userPassword进行比较.