LDAP/AD身份验证随机错误



我正在通过JAAS将一个应用程序与AD/LDAP身份验证集成,虽然这个接口90%的时间都能正常工作,但当用户尝试登录时,我偶尔会遇到技术错误。日志中的错误如下:

INFO -[LdapLoginModule] user provider: ldaps://<AD server>:636/DC=global,DC=mycompany,DC=com
INFO -[LdapLoginModule] searching for entry belonging to user: <user name>
INFO -[LdapLoginModule] authentication failed
INFO -[LdapLoginModule] aborted authentication

当启用附加日志时,我可以看到以下异常:

javax.security.auth.login.FailedLoginException: Cannot find user's LDAP entry

(这不是凭据问题-正如我所解释的,它是随机发生的,如果用户尝试使用相同的凭据再登录几次,最终会成功)
从下面的链接中检查LdapLoginModule.java代码,我试图按照代码中的日志输出来了解这到底发生在哪里,但我无法确切理解为什么会达到/抛出"身份验证失败"输出:LdapLoginModule.java

有人能帮我理解是什么原因导致了这个随机问题,并为我指明正确的方向吗?这可能是AD方面或JAAS配置方面的问题吗?

以下是一些附加信息:

  • SSL已启用
  • "AD服务器"不是域控制器,而是负载平衡的DNS方法
  • 使用匿名绑定(先搜索)模式

JAAS配置:

LDAP_AD {
com.sun.security.auth.module.LdapLoginModule REQUIRED
userProvider="ldaps://<AD server>:636/DC=global,DC=mycompany,DC=com"
userFilter="(&(sAMAccountName={USERNAME})(objectcategory=user)(memberof=CN=aGroup,OU=Security Groups,OU=Groups,OU=Geneva,OU=Switzerland,OU=EMEA,DC=global,DC=mycompany,DC=com))"
useSSL=true
debug=true;
};

任何关于这一根本原因的想法都将不胜感激。

非常感谢,George

正如您注意到的那样,有一个负载均衡器在阻碍您,您的症状表明您正在将负载平衡到一个不同步的节点。这是不太可能的,但更有可能是一个AD DC对你的配置不满意,但其他人都同意。

对于新用户或新更改的用户,复制延迟将是现实生活中此问题的常见示例。

对于现有用户来说,这似乎不太可能。

它也可能与memberOf属性有关,该属性不是静态属性,而是在查询时评估的动态查询。

最新更新