【发布时间】:2017-03-02 07:43:17
【问题描述】:
我正在开发需要验证用户密码的 java web 应用程序
使用 LDAP 服务器我对此不太了解。我从应用程序服务器到 LDAP 的请求是
已经用证书文件加密,但我仍然需要使用 SHA-256 加密密码。
我该怎么办???
我的 Java 代码是:
Hashtable<String,String> env = new Hashtable<String,String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL,"ldaps://" + ldap_url);
env.put(Context.SECURITY_AUTHENTICATION, auth_method);
env.put(Context.SECURITY_PRINCIPAL, "abcd123"+"@"+ldap_domain);
env.put(Context.SECURITY_CREDENTIALS, "mypassword");
env.put(Context.SECURITY_PROTOCOL,"ssl");
System.setProperty("javax.net.ssl.keyStore", keystorePath);
System.setProperty("javax.net.ssl.keyStorePassword", "changeit");
ctx = new InitialDirContext(env);
我得到了这个 this 但无法使用 SHA-256
【问题讨论】:
-
一般来说,我们希望您的 LDAP 服务器会加密密码。您只需要通过 SSL 以文本形式发送它。 (或使用 StartTLS)
-
是的,但我说的是网络上流动的信息加密,我可以吗??就像这个链接正在使用 MD5 docs.oracle.com/javase/jndi/tutorial/ldap/security/digest.html
-
SHA-256 不是加密算法。您不需要自己对 LDAP 密码进行任何预处理。 LDAP 服务器会做任何必要的事情。您需要提供的只是安全的运输方式。不清楚你在问什么。