java - 使用 MD5 密码连接到 LDAP

标签 java authentication ldap md5

我有以下设置来连接到我的 LDAP:

Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://urlTomyLDAP:389");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, name);
env.put(Context.SECURITY_CREDENTIALS, password);

当密码处于“清除”状态时,一切正常。但这个密码是从网络客户端获取的,并且是哈希值(使用 JavaScript)。
所以我没有明确的密码。 是否可以使用我的散列密码配置环境映射?又如何?

最佳答案

这是不可能的,而且这样做也是错误的。

哈希用于保护明文密码在被访问(例如由管理员)或被盗时不被泄露。因此 LDAP 通常存储用户密码的哈希值。如果有人可以访问存储的 LDAP 密码哈希,则原始用户的密码不可见,因此无法用于进行身份验证。

如果您接受密码的哈希作为有效的身份验证方法,那么访问该哈希将使某人能够在不知道原始密码的情况下进行身份验证。

如果您绝对需要在浏览器中完成身份验证,那么将密码的哈希值从 LDAP 传递到客户端并通过 JavaScript 根据收到的哈希值验证用户的输入会更安全。在这种情况下,盐是绝对必须的,这实际上不是您应该实现安全性的方式。

关于java - 使用 MD5 密码连接到 LDAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27989128/

相关文章:

Java 包装输入流

PHP登录系统密码不匹配

javascript - 如何检查浏览器是否正版?

security - 以某个用户的代理身份登录

ldap - 如何在 ApacheDS 上解锁用户

ssl - 当父域是非 SSL 时如何使用 LDAPS 创建子域?

java - 如何在java类中使用外部javascript函数

java - Eclipse luna 重复方法名称

基础中没有 OU 的 OpenLDAP 上的 java 身份验证给出了无效的凭据

java - 原子地执行代码块