Ldap 如何解决javax.naming.PartialResultException?

Ldap 如何解决javax.naming.PartialResultException?,ldap,Ldap,我们在日志中看到此警告消息 javax.naming.PartialResultException:未处理的继续引用;剩余名称“dc=global,dc=com” 每当用户登录到我们的应用程序时,它就会出现 根据,可以通过设置上下文来解决此问题。将引用到follow。但它将搜索时间从1秒增加到4秒 事实上,你可以参考,它说使用follow会减慢搜索速度 所以我的问题是,在不影响性能的情况下,从日志中消除此异常的最佳方法是什么。当您的搜索返回转介并设置为忽略转介时,您将看到此异常 [推荐:当您在广

我们在日志中看到此警告消息

javax.naming.PartialResultException:未处理的继续引用;剩余名称“dc=global,dc=com”

每当用户登录到我们的应用程序时,它就会出现

根据,可以通过设置
上下文来解决此问题。将
引用到
follow
。但它将搜索时间从1秒增加到4秒

事实上,你可以参考,它说使用
follow
会减慢搜索速度


所以我的问题是,在不影响性能的情况下,从日志中消除此异常的最佳方法是什么。当您的搜索返回转介并设置为忽略转介时,您将看到此异常

[推荐:当您在广告中搜索时,如果广告认为其他地方有更多可用信息,它会返回推荐[查找更多信息的地方]以及您的搜索结果。]

您可以通过将
上下文设置为
follow
来避免此异常。然后它也会在推荐中搜索[这就是为什么返回结果需要更多时间的原因]

但在我的情况下,转介是无效的,并返回了另一个例外


我通过将baseDN(搜索库)更改为更具体的方式解决了这个问题。例如,
ou=users,dc=mydomain,dc=com
。现在我没有看到这个异常,因为它不会返回任何引用。

另一个可能有效的解决方案是更改端口号(假设这是一个GC服务器):

如果您使用的是389端口,请将其更改为3268

如果您使用的是636端口,请将其更改为3269

这可能有效,因为(我引述):

GC(全局编录)服务器返回389上的引用以引用 更大的广告“森林”,但其作用类似于3268上的常规LDAP服务器(和 (LDAP为3269)

这对我有用

我在Shibboleth用户列表中找到了这个解决方案,Paul Caskey回答了这个问题(这都归功于他)

您可以查看此链接上的对话:


设置引用时,您需要能够解析域根地址。(例如:mydomain.com)改为3268/9端口效果很好。不幸的是,搜索和查找似乎只返回部分属性集。例如,employeeID属性永远不会返回,即使在显式查询时也是如此。全局编录没有得到所有属性(仅包含子集)。所以这不是一个适合所有人的解决方案。我正在尝试通过我的程序登录LDAP,我的观察结果是-选中AD中的“密码永不过期”和“用户无法更改密码”复选框。然后这个错误消失了。