DirContextOperations为null

时间:2013-01-29 19:03:16

标签: grails spring-security ldap

所以我有一个在我的桌面上完美运行的应用程序,并且在Windows机器上部署到tomcat时也能很好地工作。但是,当我在同一版本的tomcat上部署时尝试使用此应用程序时,但在AIX上,它无法从LDAP中检索数据。

用户可以成功进行身份验证,但上下文为空。 DirContextOperations作为null传递到我的ContextMapper。有谁知道需要打开哪些端口才能获取此数据或可能需要执行哪些其他配置?基于我所看到的,它必须是某个地方的服务器配置问题。

2 个答案:

答案 0 :(得分:0)

如果您正在使用Spring Security LDAP插件,那么很容易将AIX中的下述配置与应用程序联系起来。我为配置准备了一些快照,这样我就不会在这里混淆答案空间。查看LDAP config in AIX并尝试在AIX服务器中设置相同的内容。

现在进入LDAP插件,除了设置一堆属性之外别无其他。在AIX中完成LDAP配置后,这些属性的值将可用(如上面提到的幻灯片中所述)。

注意: -
创建独立LDAP后,如果用户与组关联,则可能需要添加域。我没有在幻灯片中提到相同的内容,因为我现在没有可用的活动LDAP主机。

<强>更新
您可以尝试切换到BindAuthenticator进行身份验证,而不是使用PasswordComparisonAuthenticator。 使用Config强制中的以下设置使用PasswordComparisonAuthenticator进行身份验证并返回DirContextOperations。可以尝试此设置吗?

grails.plugins.springsecurity.ldap.authenticator.useBind = false

@Refer LdapAuthentication Implementations

答案 1 :(得分:0)

我不确定这是否适合你的答案。尝试从Active Directory获取值时,我还在 DirContextOperations 对象中获得 null

我试图将这样的ldap属性作为Grails LDAP plugin Documentation状态:

String mail = ctx.originalAttrs.attrs['mail'].values[0]

所有这些都是空的。所以我改变了上面的这一行而不是它适用于我:

String mail = ctx.attributes.getAt('mail').values[0].toString()