没有用户名/密码的简单安全认证会产生结果

时间:2014-04-05 12:49:19

标签: java ldap apacheds

为什么这样做?

env.put(Context.PROVIDER_URL, "ldap://localhost:10389/o=csRepository");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
//env.put(Context.SECURITY_PRINCIPAL, "cn=John Eipe, ou=employees, o=csRepository");
//env.put(Context.SECURITY_CREDENTIALS, "qwer1234");

DirContext ctx = new InitialDirContext(env);
//operations on ctx

我的理解是,当SECURITY_AUTHENTICATION被指定为simple并且没有指定用户名或密码时,它应该抛出javax.naming.AuthenticationException。

1 个答案:

答案 0 :(得分:1)

解决。可悲的是,它是如何工作的。 它在Oracle文档中声明如下。

  

如果提供空字符串,空字节/ char数组或null   Context.SECURITY_CREDENTIALS环境属性,然后是   认证机制将是“无”。这是因为LDAP   要求密码对于简单身份验证是非空的。该   如果是,协议会自动将身份验证转换为“无”   密码不提供。

这会导致严重的安全漏洞。但是,我想由应用程序进行验证。