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

时间:2012-11-29 16:14:57

标签: active-directory ldap teamcity ldap-query teamcity-7.0

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

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

我在TeamCity文档中找到了this example

# 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))

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

我的用户在这里:

Active Directory screenshot

所以它是:

CompanyName.de/CompanyName/IT/Entwickler/

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

OU=Entwickler,OU=IT,OU=CompanyName,DC=CompanyName,DC=de

当我把它放入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 =公司名称,DC = DE'

我做错了什么?

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

1 个答案:

答案 0 :(得分:4)

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

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