gpt4 book ai didi

java - 如何在 LDAP 中将域名转换为可分辨名称 (DN)?

转载 作者:行者123 更新时间:2023-11-30 04:25:22 24 4
gpt4 key购买 nike

我正在创建一个能够使用 OpenDJ Client SDK 登录 LDAP 服务器的 java 应用程序,但我只有域名用户名(也称为 SAMAccountName)和密码。如果您不知道域登录,请参阅此图片:

enter image description here

您可以按照以下格式输入用户名字段:DOMAIN_NAME\USER_NAME,而不仅仅是普通的 USER_NAME。域名示例为:corp.fabrikam.com。


现在我需要知道如何将域名转换为可分辨名称 (DN)?因为 OpenDJ 需要专有名称才能连接到 LDAP。

例如:corp.fabrikam.com 的专有名称为:dc=corp, dc=fabrikam, dc=com。

看来我只需要用“.”来分割它,但我听说有一种叫做不相交域的东西:
http://technet.microsoft.com/en-us/library/cc731125%28v=ws.10%29.aspx

所以 split 技巧在这里可能不可靠。

此外,LDAP 中的用户可以位于组织单位 (OU) 下。假设用户 john 属于 ma​​nager OU,因此 john 的完整用户 DN 将如下所示:

uid=约翰、ou=经理、dc=corp、dc=fabrikam、dc=com

最佳答案

您应该始终引用 ldap 服务器的 RootDSE 条目来获取有关您正在连接的环境的信息。 RootDSE 条目可由匿名绑定(bind)的任何人读取(或特定用户,这并不重要,只要您被绑定(bind)即可)。它包含很多有趣的东西,您正在寻找的是defaultNamingContext。

绑定(bind)后,对空字符串的 DN 执行 ldap 读取操作:''。如果您选择的框架提供了一些 API 来读取 rootDSE,请尝试使用它。可能会更简单。

这可能会帮助您开始: http://opendj.forgerock.org/opendj-ldap-sdk/apidocs/index.html我在 opendj 文档页面上没有找到任何提及 defaultNamingContext 的内容,但您可能只是通过 getNamingContexts() 方法获取您正在查找的信息。

请注意,rootDSE 是一项 LDAP 功能,它不是特定于实现的。

关于java - 如何在 LDAP 中将域名转换为可分辨名称 (DN)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16013624/

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