0

我们有一个允许通过 LDAP 进行身份验证的 java web 应用程序。基本上,它遵循以下过程:

  • 使用有权搜索目录的管理员用户绑定到目录。
  • 获取用户名/值并在目录中搜索在特定属性中具有该用户名/值的用户。
  • 与使用输入的密码找到的用户绑定。
  • 如果绑定成功,我们将授予登录权限。

这很好用,但我们最近遇到了 LDAP 用户登录的环境,它无权浏览目录本身。这会在绑定时导致错误。(管理员用户正确绑定,并搜索目录。只有与找到的用户的最终绑定失败)。

来自 LDAP 目录(CA 目录)的内部日志显示绑定功能是成功的,但作为绑定过程的一部分,绑定用户正在查找自己......它无权执行此操作。这会导致绑定失败。

使用此 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); 

有没有办法阻止内部查找发生?

或者有没有办法可以在不绑定的情况下验证用户/密码?IE。代表另一个用户绑定.. 或手动比较密码(听起来不太好)。

谢谢。

4

1 回答 1

2

目录设置不正确。用户应该能够阅读他自己的条目。

于 2013-11-08T03:21:22.253 回答