在 LDAP 中,绑定 DN 究竟是什么?

dir*_*ide 29 ldap

我已经编写了各种连接到 LDAP 服务器并运行查询的代码,但对我来说一直都是巫术。我不太明白的一件事是绑定 DN 的概念。下面是一个使用ldapsearchopenldap 提供的命令行工具的示例。(忽略缺少身份验证。)

ldapsearch -h 1.2.3.4 -D dc=example,dc=com [query]
Run Code Online (Sandbox Code Playgroud)

这部分的目的和功能是-D dc=example,dc=com什么?为什么我们需要绑定到目录层次结构中的特定位置?是否要确定我的查询应应用于目录的哪一部分?例如,如果目录的根节点是dc=com,并且它有两个子节点(dc=foodc=bar),也许我希望我的查询针对dc=foo,dc=com子树而不是dc=bar,dc=com子树?

小智 41

不要混淆baseDNbindDN

搜索的baseDN是起点。它将从哪里开始搜索。不言自明。

指定binddn DN基本上是您正在使用针对LDAP身份验证凭据。使用 bindDN 时,它通常带有与之关联的密码。

换句话说,当您指定一个 bindDN 时,您正在使用该对象安全访问来遍历 LDAP 树。

现在,字符串 dc=example,dc=com 不是bindDN的最佳示例,因为它是 LDAP 树的“域”。dc代表域组件,每个 LDAP 树都使用 dc=string,dc=string,... 形式的字符串定义其根,但这些字符串不像树的其余部分那样是“路径”。

有效的例子是:

  • dc=示例,dc=com
  • dc=我的域名
  • dc=avery,dc=long,dc=list,dc=of,dc=domains

但是,这些根元素是不可分割的。它们看起来像是代表树其余部分的路径的几个元素,但它们不是。例如,在最后一个示例中,对象dc=of,dc=domains不存在。

想象一下,将您的 C: 驱动器命名为“D:\my\folder\”。那里的每个路径看起来都类似于“D:\my\folder\my\real\path”,这会令人困惑,因为真正的文件路径是 \my\real\path 对吗?嗯,这就是带有一组 dc= 元素的 LDAP 的基础(根)的样子。

相关链接:http : //docs.oracle.com/cd/E19199-01/816-6400-10/lsearch.html

  • 这似乎是一个不必要的混乱设计,但您的解释确实有道理。 (7认同)

Joh*_*ohn 24

绑定 DN 是一个对象,您绑定到 LDAP 内部以授予您执行任何您尝试执行的操作的权限。一些(许多?)LDAP 实例不允许匿名绑定,或者不允许使用匿名绑定进行某些操作,因此您必须指定一个 bindDN 来获取执行该操作的身份。

以类似的非技术方式 - 是的,这是一个延伸 - 银行将允许您走进并查看他们的利率,而无需给他们任何类型的身份证,但为了开户或取款,您必须拥有一个他们知道的身份 - 该身份是 bindDN。

  • 托马托,托马托。用户名、绑定 DN。‍♂️ (2认同)