2011-05-09 2094 views
2

我在OpenLDAP中拥有一组用户,我希望从他们那里获得一些信息,例如“cn”和“userPassword”。解密OpenLDAP密码

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

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

+1

你有合法的授权吗?如果是这样,您应该先找出所用的算法以及用于加密的密钥的位置。 – 2011-05-09 15:07:06

+1

你真的想要读取/解密密码吗?这似乎不明智。通常LDAP系统很难确保密码不可解密。 – IAmTimCorey 2011-05-09 15:09:01

+0

是的,我只是一些测试工作 - 我只是希望能够将ldap的相同细节解析到另一个登录系统,以便用户不必再次输入细节。 这个ldap系统是我自己的,具有一个简单的设置 - 因此原因是将userPassword设置为“明文” – odtf 2011-05-09 15:20:33

回答

6

的userPassword的是在散列形式generaly商店

userPassword: {hasAlgorithm}Hashed value 

实施例:

userPassword: {SSHA}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3 

userPassword属性被允许有不止一个值,并且能够用于待存储在每个值以不同的形式。在认证过程中,slapd会遍历这些值,直到找到与提供的密码相匹配的值,或者直到它用尽检查值。该存储方案存储为前缀的价值

您可以:

CRYPT

该方案采用操作系统的的crypt(3)散列函数。它通常产生了传统的Unix风格的13个字符的哈希值,但与glibc2的系统还可以生成更安全的34个字节的MD5哈希

MD5

该方案只是简单地采用密码的MD5哈希并将其存储在64位编码形式

SMD5

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

SSHA

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

结论

你们中的大多数没有恢复密码的时候,你只需要计算与给定的密码哈希用户在登录表单中,并将其与userPassword中的一个进行比较。

0

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

也就是说,存储纯文本密码并不是一个好主意。至少要加密它,以便临时观察者不能轻易扭转它。不,ROT13或base64编码不算。

+0

你不应该推荐密码加密。请只散散。 – EJP 2016-12-15 22:56:00