3

我正在 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))

所以我只需要替换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, distinctName] 导致错误

和:

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

我究竟做错了什么?

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

4

1 回答 1

4

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

编辑:如果你真的想把它限制在OU中的用户,那么你需要将搜索的基本DN更改为OU,并取出memberOf参数进行搜索。

于 2012-11-29T17:08:16.987 回答