所以我有一个可以在我的桌面上完美运行的应用程序,并且在部署到 Windows 机器上的 tomcat 时也可以完美运行。但是,当我尝试在部署在同一版本的 tomcat 上但在 AIX 上使用此应用程序时,它无法从 LDAP 中检索数据。
用户能够成功进行身份验证,但上下文为空。DirContextOperations
被传递到我ContextMapper
的为空。有谁知道需要打开哪些端口才能获取此数据或可能需要进行哪些其他配置?根据我所看到的,它必须是某处的服务器配置问题。
所以我有一个可以在我的桌面上完美运行的应用程序,并且在部署到 Windows 机器上的 tomcat 时也可以完美运行。但是,当我尝试在部署在同一版本的 tomcat 上但在 AIX 上使用此应用程序时,它无法从 LDAP 中检索数据。
用户能够成功进行身份验证,但上下文为空。DirContextOperations
被传递到我ContextMapper
的为空。有谁知道需要打开哪些端口才能获取此数据或可能需要进行哪些其他配置?根据我所看到的,它必须是某处的服务器配置问题。
我不确定这是否是您的情况的答案。尝试从 Active Directory 获取值时,我在DirContextOperations对象中也得到了null 。
正如Grails LDAP 插件文档所述,我试图获得这样的 ldap 属性:
String mail = ctx.originalAttrs.attrs['mail'].values[0]
所有这些都是空的。所以我改变了上面的这一行,它对我有用:
String mail = ctx.attributes.getAt('mail').values[0].toString()
如果您使用的是Spring Security LDAP插件,那么将下面提到的 AIX 中的配置与应用程序关联起来很容易。我为配置准备了一些快照,以免在此处弄乱答案空间。查看 AIX 中的LDAP 配置并尝试在 AIX Server 中进行设置。
现在来到 LDAP 插件,除了需要设置一堆属性外,别无其他。在 AIX 中完成 LDAP 配置后,这些属性的值将可用(如上面提到的幻灯片中所述)。
注意:-
创建独立 LDAP 后,如果用户与组关联,您可能需要添加领域。我没有在幻灯片中提到相同的内容,因为我现在没有可用的活动 LDAP 主机。
更新您可以尝试切换到身份验证
而不是使用。使用 Config 中的以下设置强制使用进行身份验证并返回. 可以试试这个设置吗?BindAuthenticator
PasswordComparisonAuthenticator
PasswordComparisonAuthenticator
DirContextOperations
grails.plugins.springsecurity.ldap.authenticator.useBind = false
@Refer LdapAuthentication 实现。