当前位置: 首页 > 知识库问答 >
问题:

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

杨飞
2023-03-14

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

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=de))',scope=2,attributes=[sAMAccountName,distrivishedname]导致错误

和:

用户“myuser”登录失败:javax.security.auth.Login.loginException:[LDAP:错误代码32-0000208d:nameerr:DSID-031001CD,问题2001(NO_OBJECT),html" target="_blank">数据0,最佳匹配:“dc=companyname,dc=de”

我做错了什么?

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

共有1个答案

端木乐语
2023-03-14

memberOf正在寻找一个组,而不是一个OU。您应该创建一个组来限制访问,将批准用户添加到组中,并在筛选器中指定组的可分辨名称。您应该注意,简单的'memberof={DN}‘筛选器没有考虑嵌套的组成员身份。

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

 类似资料:
  • 问题内容: 我想使用ES进行图书搜索。因此,我决定将作者姓名和标题(作为嵌套文档)放入索引,如下所示: 我不明白的是:如何构造搜索查询,以便在搜索“一二”时仅找到第二本书,而在搜索“二三”时什么也找不到,而在搜索“一”时所有图书呢? 问题答案: 也许是这样的? 该查询基本上说一个文件必须有and 。您可以轻松地重新配置该查询。例如,如果您只想搜索作者,请删除嵌套部分。如果您想要另一本书,请更改嵌套

  • 我问了这个问题作为对另一个问题的评论,也在mongodb-user上发布了一个问题。到目前为止没有回复,所以我求助于问一个单独的问题。 文件说明: 如果字段包含一个数组,则$in操作符选择其字段包含数组的文档,该数组至少包含一个与指定数组中的值匹配的元素(例如,等等) 我正在使用: 在MongoDB外壳中: 下面是应根据文档及其生成的结果工作的查询列表: 为什么这个不行? 为什么我需要所有的钱?

  • 问题内容: 我在获取与Elasticsearch一起使用的嵌套查询时遇到问题(如果我删除了查询字符串之一,则可以使用)。我要解决的问题是我有一个包含关闭列表的文档(关闭)。我想在条件满足另一个值的闭包列表中搜索一个值。那只是从argan = 1的闭包中获得价值 我正在得到这个错误响应; 我的映射如下所示。 有人知道我在做什么错吗? 问题答案: 您的查询不是有效的查询。您需要使用适当的复合查询将其他

  • 我希望编写组筛选器,在该筛选器中,我希望提取所有及其,但将排除在指定的内。它将消除循环群的机会。 例如,组A包含以下成员: null 在查询中,我只想要用户1和用户2的组A。 过滤器示例是,但我不知道在成员过滤器中可以使用哪些选项。

  • 我试图查询与特定用户至少有一种共同颜色的所有用户,我已经能够做到这一点,但是我无法弄清楚如何我的结果,以便我可以得到一个用户以及他们共有的颜色。 我的示例用户文档的一部分如下: 这是我的查询,用于获取与另一个具有红色、橙色和绿色的用户相同的颜色: 如何使用共同的颜色聚合用户?

  • 和相应的查询解析器 这里的主要想法只是有一个过滤器,可以看到什么食谱有一些成分,用户会通过应用程序通知。 我使用数据库中的所有食谱获得了“recipe”查询,但我需要一个获取这些食谱的查询,然后使用field comprient进行筛选,例如: 食谱-糖蛋糕,配料:糖、蜂蜜、四个… 配方-天鹅绒蛋糕,配料:糖、香草、... 并且用户通知Sugar,API应该返回这2个食谱,但是如果用户通知Suga