【问题标题】:Decrypting OpenLDAP passwords解密 OpenLDAP 密码
【发布时间】:2011-05-09 15:04:39
【问题描述】:

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

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

有什么办法解决这个问题吗?

【问题讨论】:

  • 您是否有合法授权这样做?如果是这样,您应该首先找出使用的算法,以及用于加密的密钥的位置。
  • 您真的想读取/解密密码吗?这似乎并不谨慎。通常 LDAP 系统会非常努力地确保密码不可解密。
  • 是的,我只是,它只是一些测试工作——我只是希望能够将 ldap 的相同细节解析到另一个登录系统,这样用户就不必再次输入细节。这个 ldap 系统是我自己的,设置简单 - 因此我将 userPassword 设置为“明文”
  • 我认为您需要一个运行 OpenLDAP 的 SSO 解决方案。这通常是防止用户在访问不同系统时多次登录的方法。
  • @Vineet - 尝试创建我自己的 SSO 类型和其他一些东西,所以真的不想要一个现成的包

标签: java ldap jaas openldap gssapi


【解决方案1】:

用户密码通常以散列形式存储

userPassword: {hasAlgorithm}Hashed value

例子:

userPassword: {SSHA}DkMTwBl+a/3DQTxCYEApdUtNXGgdUac3

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

你可以拥有:

加密

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

MD5

这个方案只是简单地获取密码的 MD5 哈希值并以 base64 编码形式存储它

SMD5

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

SSHA

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

结论

大多数时候您不必恢复密码,您只需根据用户在登录表单中提供的密码计算哈希值,并将其与userPassword 中的一个进行比较。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 您不应该推荐密码加密。请只散列。
    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多