在LDAP中,绑定DN到底是什么?


19

我编写了连接到LDAP服务器并运行查询的各种代码,但是对我而言,这一直都是巫毒教。我不太了解的一件事是绑定DN的概念。这是使用ldapsearchopenldap 的命令行工具的示例。(忽略身份验证的不足。)

ldapsearch -h 1.2.3.4 -D dc=example,dc=com [query]

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

Answers:


18

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

以类似的非技术性方式-是的,这很费力-银行将允许您走进银行并查看其利率,而无需提供任何ID,但要开户或提取资金,您必须具有他们知道的身份-该身份是bindDN。


bindDN是否始终与目录中的节点相对应?还是可以是任意字符串?
土边

是。它必须对应于具有密码属性或通过其他方式进行身份验证的节点。
约翰

托马托,托马托。🍅用户名,绑定DN。♂‍♂️
emallove

31

不要混淆baseDNbindDN

搜索的baseDN是起点。它将开始搜索的地方。很不言自明。

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

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

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

有效的示例是:

  • dc = example,dc = com
  • dc = mydomain
  • dc =平均,dc =长,dc =列表,dc = of,dc =域

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

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

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


7
这似乎是一个不必要的混乱设计,但是您的解释确实有意义。
土边

1
是的,我同意。将根命名为路径似乎并不是最佳选择,但我想它一定有其原因。现在您知道了为什么所有DN都以一系列dc =组件结尾。=)
马塞洛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.