好吧,所以我一直在努力与这个绑定到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的介绍。