java - 使用搜索检索 LDAP 信息时出错

标签 java ldap

我正在尝试设置 LDAP LoginModule(使用 BrowserLdapLoginModule )。用户/密码正确;它从用户那里检索角色,但是当它尝试提取 CN 值时,它找不到这些值。

我遵循了该过程,最终失败的是我在以下行中得到了 javax.naming.NameNotFoundException

NamingEnumeration roleAnswer = ctx.search(searchBaseDN, roleFilter, roleconstraints);

具有以下值(不包括双引号):

  • searchBaseDN(String) = "OU=Roles,DC=siafake,DC=aplssib"
  • roleFilter(String) = "(distinguishedName=CN=Urgencias,OU=Roles,DC=siafake,DC=aplssib)"
  • derefRoleAttribute(String[] = { "cn"};

有了这些数据,我希望搜索返回 Urgencias,但我只得到了异常(exception)。这不是权限问题,因为使用相同的用户/密码我可以毫无问题地浏览 LDAP 树。

有什么想法/建议吗?提前致谢。

LDAP capture

最佳答案

好的,这是我找到的答案(还有对 Terry Gardner 评论的一些澄清)

我的系统管理员给了我用户 A(“系统”用户,可以连接和浏览 LDAP)。将连接到我的应用程序的用户是用户 F(最终用户)。当询问有关配置我的 jboss 的示例时,他们将我重定向到 BrowserLdapModuleLogin (BLML)。

事实证明,BLML 的工作原理是与用户 A 进行初始连接,以检索用户 F 数据(完整的 LDAP“名称”)。

之后,使用用户 F 连接数据设置新连接来验证用户/密码并检索其所属的组(memberOf 属性)。到目前为止,一切都按预期进行(至少在我们的设置中)。

当我设置仅获取“CN”值(而不是 CN=value,OU=organization....)的选项时,问题就开始了。通过设置此选项,模块会再次尝试以用户 F 身份登录角色树以获取属性。但碰巧F没有权限这样做。

由于该模块是由我们的 IT 人员提供的,而我是 LDAP 的新手,我以为我只是设置了一些错误,并且我不想更改代码中的任何内容。最后,碰巧在使用它的系统中,这个模块仅用于身份验证;这些角色是从另一个数据库中提取的,我被迫围绕这个问题进行编码。

抱歉给您带来麻烦了...

关于java - 使用搜索检索 LDAP 信息时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10635700/

相关文章:

java - 如何使用 Mockito 测试 POST 方法

active-directory - DirectoryServicesCOMException.ExtendedErrorMessage - 数据代码列表

azure - 与 Azure 中的 LDAP 集成

java - 如何将 Spring Data LDAP 存储库分配给特定连接(LDAPTemplate)?

apache - trac 通知不发送电子邮件

java - 从 JLabel 中选择文本?

java - 猜谜游戏程序。用户想到数字,计算机尝试猜测它

java - 示例 : How would a Child class access Canvas within Parent?

java.io.IOException : Cannot run program "plink": CreateProcess error=2, 系统找不到指定的文件

c# - .Net 程序未获得经过验证的服务器证书