我不知道我的问题的标题是否有意义 - 但请让我解释一下。
当您执行 LDAP 查询时,您(显然)应该在 Bind 中指定一个 DN 以“登录”到 LDAP 服务器。当我使用 slapd/OpenLDAP 执行此操作时,Bind DN 是一个普通的 DN,例如
cn=brad,ou=用户,dc=corp
或其他。但是,当我针对 [我们公司的] Active Directory [服务器] 执行此操作时 - 它希望“绑定 DN”如下所示:
CORP\brad
这确实有效。但是,“CORP\brad”实际上并不是 ldap 树中的 DN。实际上,“brad”作为“cn=brad,ou=users,dc=corp”之类的对象存在 - 并且该对象具有“brad”的“sAMAAccountName”属性(我的实际用户名 - 为简化起见,此处进行了更改)。我不知道这是否只是“巧合” - 或者是否还有其他类似的情况。你怎么看出来的?
所以 - 我的问题是 - 基于传递给 BIND 的 DN /“凭据”,如何确定指定的“绑定 DN”等同于什么实际“可分辨名称” - 当在 AD 中时 - 它们似乎不是同一个?
答案1
sAMAccountName 是 Active Directory 中的用户名。如果您在 ldap 中搜索 samaccountname 与您的用户名匹配的用户,则可以通过这种方式获取 DN。
答案2
您或许可以从“ADsPath”中提取 DN。绑定到 AD 后,您可以在程序中将其作为属性/字段获取。
AD 上的 DIT 和由 OpenLDAP 支持的其他目录可能不一样,从而呈现不同的 DN。