如何为未知层次结构编写基本 ldap 字符串

How to compose a base ldap string for unknown hierarchy

我有一个看起来有点像这样的活动目录:

gdcmpny.com
    |__GoodCompany
       |
       |__NYC
       |  |__Users
       |
       |__SF
          |__Users

当用户向我发送他的用户名+密码时,我无法知道他是 NYC/Users 还是 SF/Users。有没有办法像这样复合字符串:

CN=Users,OU=%s,OU=GoodCompany,DC=gdcmpny,DC=com

所以 ldap 请求会在 NYC/Users 和 SF/Users 中查找?或者我是否必须指定确切的绝对路径?
我正在使用 Go 发送请求,包 github.com/jtblin/go-ldap-client.
谢谢!

遗憾的是不在 Microsoft Active Directory 上。

有个东西叫ExtensibleMatch, but not supported on Microsoft Active Directory

-吉姆

您不需要使用完全限定的 DN 来对 Active Directory 服务器进行 LDAP 绑定。您可以使用 sAMAccountName 和 userPrincipalName 值对 AD LDAP 进行身份验证...假设您在单个林中有一棵树,这些值是通过将用户提供的登录 ID 与字符串连接而成的。

对于旧域名 GDCMPNY 的 AD 域 gdcmpny.com,登录 ID MyUserName 的用户具有 userPrincipalName MyUserName@gdcmpny.com 和 sAMAccountName GDCMPNY\MyUserName 不管它们的 ID 在目录结构中的哪个位置。

如果您在林中有多个域并且不能简单地知道要添加到用户 ID 的正确字符串,您可以在已知系统凭据下绑定,搜索用户提供的登录 ID,以及 return 匹配条目的完全限定 DN (FQDN)。然后使用 FQDN 和用户提供的密码来验证用户的凭据。

字符串格式,如:

CN=Users,OU=%s,OU=Goenter code hereodCompany,DC=gdcmpny,DC=com

不受支持,但我可以简单地不在我的请求中指定整个层次结构。
这对我有用:

OU=GoodCompany,DC=gdcmpny,DC=com