我们有一个允许通过LDAP进行身份验证的java Web应用程序 . 基本上,它遵循这个过程:
-
绑定到具有搜索目录权限的admin用户的目录 .
-
获取用户名/值,并在目录中搜索在特定属性中具有该用户名/值的用户 .
-
与使用输入的密码找到的用户绑定 .
-
如果绑定成功,我们授予登录权限 .
这很好用,但我们最近遇到了LDAP用户登录的环境,无权访问目录本身 . 这会在绑定时导致错误 . (admin用户绑定正确,并搜索目录 . 它只是与找到的用户失败的最终绑定) .
来自LDAP目录(CA Directory)的内部日志记录显示绑定功能已成功,但作为绑定过程的一部分,绑定用户正在查找自己...它无权访问 . 这会导致绑定失败 .
使用此java代码完成对LDAP的绑定 .
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
props.put(Context.PROVIDER_URL, createLDAPString());
props.put(Context.SECURITY_AUTHENTICATION, "simple");
props.put(Context.SECURITY_PRINCIPAL, username);
props.put(Context.SECURITY_CREDENTIALS, password);
return new InitialLdapContext(props, null);
有没有办法阻止内部查找发生?
或者我是否可以在不绑定的情况下验证用户/密码?即 . 代表另一个用户绑定..或手动比较密码(听起来不太好) .
谢谢 .
1 回答
目录设置不正确 . 用户应该能够阅读自己的条目 .