gpt4 book ai didi

java - 通过java访问AD时即时Timelimit错误的原因

转载 作者:太空宇宙 更新时间:2023-11-04 07:45:07 24 4
gpt4 key购买 nike

我正在尝试追查导致抛出以下异常的 CAS 问题:

javax.naming.TimeLimitExceededException: [LDAP: error code 3 - Timelimit Exceeded]; remaining name ''
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3097)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2794)
at com.sun.jndi.ldap.LdapNamingEnumeration.getNextBatch(LdapNamingEnumeration.java:129)
at com.sun.jndi.ldap.LdapNamingEnumeration.hasMoreImpl(LdapNamingEnumeration.java:198)
at com.sun.jndi.ldap.LdapNamingEnumeration.hasMore(LdapNamingEnumeration.java:171)
at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:295)
at org.springframework.ldap.core.LdapTemplate.search(LdapTemplate.java:361)...

几乎立即返回错误。客户端超时设置为 10 秒,但这种情况并未发生,因为根据查看 com.sun.jndi.ldap 代码,域 Controller 似乎返回状态为 3 的响应,表示超出了时间限制。

我们正在访问 Active Directory 全局编录,并且我们的过滤器和基础非常广泛:base = '', filter = (proxyAddresses=*:someone@somewhere.com)但是,有时查询成功,但返回立即状态码3。

有谁知道什么可能导致这种行为?或者也许如何确定到底发生了什么?

最佳答案

事实证明我们的搜索过滤器太宽泛了。

如您所见,我们在过滤器中使用了通配符,查询花费了不到 2 秒的时间。

但是,2 秒远远短于 Active Directory 配置的时间限制,因此我无法弄清楚为什么立即发生错误(甚至在失败时都没有花费 2 秒)。

我认为 AD 一定已经累积了来自同一帐户的多个请求所花费的时间,并且在某个时刻开始返回超出时间限制的错误。

为了解决这个问题,我们修改了搜索过滤器,使其不再包含通配符。然后搜索几乎立即运行,并且不再发生超出时间限制的情况。

关于java - 通过java访问AD时即时Timelimit错误的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15439694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com