0

我在活动目录上遇到了 mongodb 地图集和嵌套组的问题。

目前我们没有用户进入组的问题:

组 -> 用户 1

例如,如果此用户嵌套在其他组中:

组 -> 组 1 -> 用户 1

我们可以使用“user1”连接mongodb atlas,但它没有显示任何内容,我的意思是“组”具有权限的集合或数据库。

目前,我们 mongo atlas 门户上的 ldap 查询模板是:

{USER}?memberOf?base

在此处输入图像描述

我认为它不能递归地工作并且只列出该组的成员。我在 mongodb 文档https://docs.mongodb.com/manual/tutorial/authenticate-nativeldap-activedirectory/#configure-ldap-query-template-for-authorization上找到

这个:

security:
  ldap:
    authz:
      queryTemplate:
        "DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))"

所以我认为可以构建一个递归工作的查询。

我如何构建查询以更改附加的图像之一,以使用户进入嵌套组?

谢谢

4

1 回答 1

0

您完全使用他们在文档中的内容:

DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))

只需更改DC=example,DC=com为您的域的专有名称 (DN)。

LDAP 查询有几个部分,每个部分由?.

  1. 搜索根。这是您希望开始搜索的 DN。
  2. 您希望搜索返回的属性列表。这就是memberOf在默认搜索中指定的原因。
  3. 搜索深度。这可以是以下之一:
    • 子树(或“sub”),表示要搜索搜索根目录下的所有级别。
    • 一级。例如,如果搜索根是一个 OU,那么使用“一级”意味着您只想搜索那个 OU 而不是它下面的任何内容。
    • Base,意味着结果只能包括搜索根本身。
  4. 搜索查询。

所以在默认查询中:

{USER}?memberOf?base

搜索根是{USER},经过身份验证的用户的 DN。它只返回memberOf属性。而且您只想查看那个对象(因为“基础”)。没有搜索查询。

在新查询中:

DC=example,DC=com??sub?(&(objectClass=group)(member:1.2.840.113556.1.4.1941:={USER}))

搜索根是域的根。没有属性列表。搜索深度是“sub”,这意味着您希望它搜索整个域。然后搜索查询告诉它返回所有将经过身份验证的用户作为直接或嵌套成员的组。

在这两个查询中,您最终都会得到一个组列表。

于 2020-06-01T12:56:39.117 回答