How to specify hash algorithm when updating LDAP via Java?(通过 Java 更新 LDAP 时如何指定哈希算法?)
本文介绍了通过 Java 更新 LDAP 时如何指定哈希算法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当您使用 Java API 更新 Open LDAP 目录时,有没有办法指定哈希算法(MD5、SHA1 等)用于存储密码,代码如下:
Is there a way to specify the hash algorithm (MD5, SHA1, etc.) to use for storing the passwords when you update an Open LDAP directory using Java APIs with code like this:
private void resetPassword(String principal, String newPassword) throws NamingException {
InitialDirContext ctxAdmin = null;
Hashtable<String, String> ctxData = new Hashtable<String, String>();
ctxData.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
ctxData.put(Context.PROVIDER_URL, "ldap://myserver:389");
ctxData.put(Context.SECURITY_AUTHENTICATION, "simple");
ctxData.put(Context.SECURITY_PRINCIPAL, "admin_dn");
ctxData.put(Context.SECURITY_CREDENTIALS, "admin_passwd");
InitialDirContext ctxAdmin = new InitialDirContext(ctxData);
if (newPassword == null || newPassword.equals("")) {
String msg = "Password can't be null";
throw new NamingException(msg);
} else {
if (principal == null || principal.equals("")) {
String msg = "Principal can't be null";
throw new NamingException(msg);
} else {
if (ctxAdmin == null) {
String errCtx = "Can't get LDAP context";
throw new NamingException(errCtx);
}
}
}
BasicAttribute attr = new BasicAttribute("userpassword", newPassword);
ModificationItem modItem = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr);
ModificationItem[] items = new ModificationItem[1];
items[0] = modItem;
ctxAdmin.modifyAttributes("cn=" + principal + ",ou=Users,dc=com", items);
}
推荐答案
应该这样做:(MD5)显示
Something along these lines should do it: (MD5) Shown
context.setAttributeValue("userPassword", digestMd5("newPassword));
private String digestMd5(final String password) {
String base64;
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(password.getBytes());
base64 = new BASE64Encoder().encode(digest.digest());
}
catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
return "{MD5}" + base64;
}
-吉姆
这篇关于通过 Java 更新 LDAP 时如何指定哈希算法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:通过 Java 更新 LDAP 时如何指定哈希算法?
基础教程推荐
猜你喜欢
- 如何对 Java Hashmap 中的值求和 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- RabbitMQ:消息保持“未确认"; 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
