我正在尝试设置LDAP LoginModule(使用BrowserLdapLoginModule)。用户/密码正确;它从用户检索角色,但当它试图提取CN值时,它找不到值。
我已经关注了这个过程,最后失败的是我在下一行中得到了一个javax.naming.NameNotFoundException
NamingEnumeration roleAnswer = ctx.search(searchBaseDN, roleFilter, roleconstraints);
具有以下值(不包括doble引号):
使用该数据,我希望搜索返回Urgencias
,但我只得到例外。这不是权限问题,因为使用相同的用户/密码,我可以毫无问题地浏览LDAP树。
有什么想法/建议吗?提前谢谢。
答案 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中提取出来的,我不得不围绕这个问题进行编码。
对不起烦恼......