查询Active Directory/LDAP,查找嵌套组织单位中的用户

Chr*_*cht 5 teamcity ldap active-directory ldap-query teamcity-7.0

我正在 Windows 域 (Active Directory) 中的 TeamCity 7.1.2 中配置 LDAP 身份验证。

基本上它可以工作(我可以使用我的域用户登录!),但是整个公司的每个用户都可以登录。
--> 现在我试图仅限制开发人员的访问权限。

我在 TeamCity 文档中找到了这个示例:

# filtering only users with specified name and belonging to LDAP group "Group1" with DN "CN=Group1,CN=Users,DC=example,DC=com"
teamcity.users.login.filter=(&(sAMAccountName=$capturedLogin$)(memberOf=CN=Group1,CN=Users,DC=example,DC=com))
Run Code Online (Sandbox Code Playgroud)

所以我只需要替换CN=Group1,CN=Users,DC=example,DC=com为我的用户所在的 LDAP 组。
但查询 LDAP 对我来说是全新的,所以我无法找出正确的语法。

我的用户在这里:

活动目录屏幕截图

所以就是:

CompanyName.de/CompanyName/IT/Entwickler/
Run Code Online (Sandbox Code Playgroud)

“CompanyName”、“IT”和“Entwickler”是组织单位。
我理解语法是:

OU=Entwickler,OU=IT,OU=CompanyName,DC=CompanyName,DC=de
Run Code Online (Sandbox Code Playgroud)

当我将其放入 TeamCity 的配置文件中时,我无法登录,TeamCity 会将其写入其日志文件:

在 LDAP 中搜索:base='DC=CompanyName,DC=de', filter='(&(sAMAccountName=MyUser)(memberOf=OU=Entwickler,OU=IT,OU=CompanyName,DC=CompanyName,DC=de)) ',scope=2,attributes=[sAMAccountName,distinguishedName] 导致错误

和:

用户“MyUser”登录失败:javax.security.auth.login.LoginException:[LDAP:错误代码 32 - 0000208D:NameErr:DSID-031001CD,问题 2001 (NO_OBJECT),数据 0,最佳匹配:'DC=CompanyName ,DC=de'

我究竟做错了什么?

注意:我的查询
可能正确的,这是 TeamCity 中的一个问题。
(我使用的版本确实存在一些有关 LDAP 的 问题,但他们收到的错误消息比我收到的更多)
也许我会将其发布到 TeamCity 的问题跟踪器上,但在此之前我想确保不会发生错误,因为我的 LDAP 查询错误,因此这里有问题。

Sea*_*all 4

memberOf 正在寻找组,而不是 OU。您应该创建一个组来限制访问,将适当的用户添加到该组,并在过滤器中指定该组的专有名称。您应该注意,简单的“memberOf={DN}”过滤器不考虑嵌套组成员身份。

编辑:如果您确实想将其限制为 OU 中的用户,那么您需要将搜索的基本 DN 更改为 OU,并将 memberOf 参数取出到搜索中。