获取包含属性对象的LDAP属性

时间:2015-03-03 07:40:35

标签: java active-directory ldap jndi

我添加了一个LDAP条目,该条目具有由

给出的属性
BasicAttributes basicAttributes = new BasicAttributes();
BasicAttribute basicAttribute = new BasicAttribute("objectclass");
basicAttribute.add("top");
basicAttribute.add("Adapter");
basicAttributes.put(basicAttribute);
basicAttributes.put(new BasicAttribute("Name","testname"));
basicAttributes.put(new BasicAttribute("Topic", "testtopic"));

if (locid.length != 0) {
basicAttribute = new BasicAttribute("LocID");

for (int i = 0; i < locationid.length; i++)
basicAttribute.add(locationid[i]);

basicAttributes.put(basicAttribute);
}

basicAttributes.put(new BasicAttribute("Password", "passw"));

现在密码属性为 SHA哈希密码

但是当我使用 ctx.getAttributes 检索属性时

Attributes result = ctx.getAttributes(dn);
NamingEnumeration<?> nm = result.getAll();

while (nm.hasMore()) {
Attribute at = (Attribute) nm.next();
System.out.println(nm.next());
}
}

我得到的输出是

Password: [B@119cca4
Name: testname
Topic: testtopic
LocID: 
objectClass: top, Adapter
cn: test1234

如何将密码重新构建为String变量?

编辑:我试过这个

while (nm.hasMore()) {
        Attribute at = (Attribute) nm.next();
        if ( at.getID().equals("Password"))
        {
            byte [] a = (byte[] )at.get();
            String b = new String(a);
            System.out.println(b);
        }
    }

现在打印出来 - {SSHA} AvvOJFnG2tjwNTGtDzDnubC / b2B1FbzP5S / LSQ ==

现在如何让它打印出来&#34; passw&#34; - 原始密码。

1 个答案:

答案 0 :(得分:0)

经过哈希处理后,您无法检索纯文本密码;这是一种单向哈希。如果您绝对需要在之后恢复纯文本密码,建议将其存储在具有强可逆加密算法的另一个属性中。并锁定对加密值的访问。但是,如果您出于某种原因绝对需要纯文本密码(例如,您需要能够将其发布用于某些传统的单点登录过程),请执行此操作。