1

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

我遵循了这个过程,最后失败是我在下面的行中得到了一个 javax.naming.NameNotFoundException

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

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

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

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

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

LDAP 捕获

4

1 回答 1

1

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

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

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

之后,使用用户 F 连接数据建立一个新连接,以验证用户/密码并检索memberOf它所属的组(属性)。到此为止,一切正常(至少在我们的设置中)。

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

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

给您带来的困扰很抱歉...

于 2012-05-18T17:08:27.657 回答