缺less关于LDAP的真正基础知识,帮助我理解?

好吧,所以我一直在努力与这个绑定到LDAP的插件,这是我到目前为止已经弄清楚:

有两个string我可以修改并发送到插件.Search()方法,其中之一是baseDN,另一个是filter。

到目前为止,正确工作的baseDN值如下所示:“DC = something,DC = something”,filter的值如下所示:“objectClass = *”。

这一切都很好,让我回到了一个看起来像这样的各种项目的树:

>DC=something,DC=something -DC=admin -CN=Builtin -CN=Computers... 

等等,还有更多的东西我不明白,我不确定我在这里看到的是什么,但是我想查找一个用户并获得他的属性。

我将更改baseDN或filter来做到这一点?

我尝试了这个baseDN:“uid = [email protected]”,它给了我一个错误,我也试过这样的“uid = username @ domain.com,DC =东西,DC =东西”,它也给了我错了。

我觉得我很困惑,因为我可以浏览这些树的东西,但是如果你知道我的意思,那么它们看起来就像是定义的实际值,但是还有另外一层search是必须要做的返回用户属性?

这看起来像AD。 在LDAP-for-AD中,用户在域中的实际位置很重要。 例如,住在一个特定的组织单位的“bobs”。 他的LDAP“家”是:

 CN=bobs,OU=Employees,DC=domain,DC=com 

如果你想在员工中find“bobs”

 Base: OU=Employees,DC=domain,dc=com Filter: (cn="bobs") 

或者如果你想find名为“bobs”的用户

 Filter: (&(objectClass=User)(cn="Bobs")) 

或者如果你只是想find他身在何处的“bobs”:

 Base: DC=domain,DC=com Filter: (&(objectClass=User)(cn="Bobs")) 

有一点让LDAPfilter很难理解,它们使用前缀符号。 您可以在上面的复杂filter中看到它,其中的&符号在其两个运算符之前。 这可以使一些非常复杂的前瞻性陈述。


至于AD,有几个属性可以用来search用户。 “CN”可以是用户的帐户名称或“显示名称”。 'samAccountName'是用户名的前16个字符(我认为),如果你的用户名永远不会这么长,这是一个很好的select过滤。

filter应该是(uid = username 。 不需要将基本DN从DC = something,DC =更改,但是,如果需要,它应该与用户的DN(包括OU)相同,但不包含uid = username。

尝试阅读LDAP的火箭科学家作为LDAP的介绍。