java - LDAP用户无权浏览目录时如何绑定(bind)

标签 java ldap

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

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

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

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

与 LDAP 的绑定(bind)是使用此 java 代码完成的。

        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); 

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

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

谢谢。

最佳答案

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

关于java - LDAP用户无权浏览目录时如何绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850659/

相关文章:

java - 如何保护 GAE 灵活环境上的 google cron 服务任务?

java - 是否有支持 PL/SQL 和 Java API 的嵌入式数据库?

空白(空)属性的 LDAP 过滤器

grails - 连接到 Active Directory 并搜索用户

java - 添加两个同名的 ldap 属性

c# - LdapConnection 与 PrincipalContext

java - 我需要什么混合模式才能通过在图像上绘制透明图像来使图像更透明?

java - struts.action.excludePattern 不工作

java - 允许远程登录 LDAP 服务器

java - 实现 Java Comparator 的问题 - 泛型