我有一个 ldap 数据库。我正在使用 inetorgPerson 对象类。在这个类中有 userPassword 属性。 userPassword 值是 SHA 密码。我正在使用 javax.naming.directory 包来获取 userPassword 值。但是返回值与 SHA 密码值不同。我怎样才能得到正确的值(value)? 一个简单的代码是:
public ArrayList<String> search(String base, String filter,String[] returningAttributes){
ArrayList<String> result=new ArrayList<String>();
SearchControls ctls = new SearchControls();
ctls.setSearchScope(SearchControls.SUBTREE_SCOPE);
ctls.setReturningAttributes(returningAttributes);
NamingEnumeration resultEnum = null;
try {
resultEnum = ctx.search(base, filter, ctls);
while (resultEnum.hasMore()) {
SearchResult res = (SearchResult) resultEnum.next();
// print DN of entry
// System.out.println(res.getNameInNamespace());
// print attributes returned by search
Attributes attrs = res.getAttributes();
NamingEnumeration e = attrs.getAll();
while (e.hasMore()) {
Attribute attr = (Attribute) e.next();
result.add(attr.toString());
}
System.out.println();
}
return result;
} catch (NamingException e) {
}
return null;
}
最佳答案
I want to compare sha password in ldap with my jsf 2 password
不,你不想那样做。您想要使用新凭据执行 LDAPContext.reconnect() 并让 LDAP 进行比较。
关于java - 从 Ldap 数据库(ApacheDs)获取 SHA 密码值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6967842/