【问题标题】:Updating LDAP encrypted password via JNDI通过 JNDI 更新 LDAP 加密密码
【发布时间】:2011-07-05 09:52:39
【问题描述】:

我需要一些指示如何更新 LDAP 树中用户的 LDAP (OpenLDAP) 中的加密密码。 LDAP 服务器中的密码以 {crypt} 为前缀,我想这表明它是加密的(使用 DES?)

我需要编写一个更新用户密码的方法。这样做的正确方法是什么?我需要自己在字符串前面加上 {crypt} 吗?如何加密 {crypt} 的密码?

更新:

只是为了澄清我需要的是用于加密属性的 Java 代码,以便它与 {crypt} 一起使用。我也不知道我是否必须自己在属性前面加上字符串 {crypt}。

【问题讨论】:

    标签: java ldap jndi des crypt


    【解决方案1】:

    不,您只需要更新属性,就像任何其他属性一样,但请记住,与大多数属性不同的是,它是字节 [] 而不是字符串。

    还有一个与密码策略 IETF 草案相关的密码修改扩展操作,但您没有提到您正在使用它。

    【讨论】:

    • 如果我更新属性,它存储的明文未加密。如何让它被加密?
    • 它的存储方式应与当前在服务器上的存储方式相同。您可能必须将 ;binary 添加到属性名称。我现在远离我的源代码,但明天我会再看看这个。
    • 我认为您没有理解这个问题。我在问如何在保存属性之前加密字符串。
    • @jbx 我明白了,我有执行此操作的代码,但它不加密任何东西。它也不是 {crypt} 本身的前缀。我的理解是 JNDI 层会为您解决这个问题。它所做的只是 attrs.put("userPassword", newPassword1.getBytes());我的理解也是,如果适当地定义了属性,则 JNDI 层或服务器本身进行加密。我的当然可以。
    • 感谢您的回复。我仍然不相信它是这样的。除了 CRYPT 之外,甚至可以有不同的加密(MD5、SHA1 等),所以我怀疑 OpenLDAP 会自动执行它。如果未在客户端进行加密,您还将冒着通过网络传递未加密密码的风险。我还发现这似乎指向了这个假设stackoverflow.com/questions/2639167/…。所以我只需要知道如何生成 CRYPT 密码。
    【解决方案2】:

    在某些情况下,使用预编码密码可能会阻止目录服务器执行密码质量检查。

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 2011-05-22
      • 1970-01-01
      • 2020-02-29
      • 2015-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-19
      • 2020-06-01
      相关资源
      最近更新 更多