我正在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对我来说是全新的,所以我无法弄清楚正确的语法。
我的用户在这里:
所以它是:
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查询错误,因此问题就在这里。
答案 0 :(得分:4)
memberOf正在寻找一个群组,而不是一个OU。您应该创建一个组来限制访问,将适当的用户添加到组中,并在过滤器中指定组的可分辨名称。您应该注意,简单的'memberOf = {DN}'过滤器不会考虑嵌套的组成员资格。
编辑: 如果您确实要将其限制为OU中的用户,则需要将搜索的基本DN更改为OU,并将memberOf参数取出到搜索中。