gpt4 book ai didi

java - 在 Java 中搜索 ldapContext 中的所有子域

转载 作者:行者123 更新时间:2023-12-02 09:39:20 24 4
gpt4 key购买 nike

我已经在 J​​ava 中建立了一个 LdapContext,并且希望对其执行搜索。我正在连接到根域为 dc=fake,dc=domain,dc=com 的 IP (ldap://1.1.1.20:389)。我希望验证该服务器上的用户,但用户分布在林中的多个域中。我正在尝试查询根级别以搜索用户的所有子域。

我找到了这个教程,https://docs.oracle.com/javase/10/jmx/examples-lookup-ldap-client-java.htm#JSJMX-GUID-5BA2ADC5-5597-4F1D-BF53-F1A2C7DB6117 ,并使用它尝试通过将我的 LdapContext 转换为 DirContext 来搜索根级别,就像教程中所做的那样。

ctx = new InitialLdapContext(env, null);
DirContext root = (DirContext) (ctx.lookup(""));

SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
searchControls.setTimeLimit(30000);
ctx.setRequestControls(null);
NamingEnumeration<?> namingEnum = root.search("", "(CN=Bob Test)", searchControls);

while (namingEnum.hasMore())
{
SearchResult result = (SearchResult) namingEnum.next();
Attributes attrs = result.getAttributes();
IDActive = true;
}

这会导致 PartialResultException。我能够搜索特定位置,但我不知道如何从根正确“渗透”我的搜索,以便它可以验证任何子域中的用户。谢谢

最佳答案

如果您需要搜索整个 AD 林,它应该像连接到全局目录一样简单。就像更改您连接的端口一样简单(只要没有防火墙阻止连接):

ldap://1.1.1.20:3268

全局目录也使用 LDAP 协议(protocol),但返回整个林的结果,而不仅仅是服务器的域。有一些注意事项:

  1. 您无法在 GC 上进行更改。
  2. 某些属性不会复制到 GC(例如 accountExpires )。因此请注意,您无法通过常规 LDAP 在 GC 上获取所有相同的数据。

如果您遇到任何问题,您可以从 GC 获取 distinguishedName,然后使用它通过常规 LDAP 绑定(bind)到对象,以修改它或获取您需要的额外数据.

关于java - 在 Java 中搜索 ldapContext 中的所有子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57223546/

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