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

时间:2012-05-17 12:24:23

标签: java ldap

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

我已经关注了这个过程,最后失败的是我在下一行中得到了一个javax.naming.NameNotFoundException

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

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

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

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

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

LDAP capture

1 个答案:

答案 0 :(得分:1)

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

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

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

之后,使用用户F连接数据设置新连接以验证用户/密码并检索它所属的组(memberOf属性)。在此之前,所有工作都应该如此(至少在我们的设置中)。

当我设置选项以获得“CN”值(而不是CN=value,OU=organization....)时,麻烦就开始了。通过设置此选项,模块将再次尝试将作为用户F 登录到角色树中以获取属性。但恰好F没有权限这样做。

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

对不起烦恼......