【问题标题】:Get all groups where a user is member of in LDAP获取 LDAP 中用户所属的所有组
【发布时间】:2017-05-01 15:57:55
【问题描述】:

我使用 ApacheDS 作为目录服务器,用于 Gogs 等应用程序(Git 服务器如 GitLab)。我的想法是创建像gogs-users 这样的组并将登录限制为这些组,以便只有属于该组成员的用户才能登录。我为此创建了一个 groupOfNames 和一个 testuser,它被添加到 gogs 组中。

gogs-users 的类型是 groupOfNames,它有一个属性 member,其中包含我的用户的 DN(uid=testuser,ou=Users,DC=example,DC=com)。所以我可以看到,谁是这个小组的成员。

但我想查看 user 所属的所有组。当我打开 testuser 时,我看不到任何属性可以告诉我,他是 gogs-users 的成员。我记得专有的 Active Directory 有一个名为 memberOf 的属性,它可以在像 (&(objectClass=inetOrgPerson)(memberOf=CN=gogs-user,DC=example,DC=com)) 这样的过滤器中查询。那正是我所需要的。

如何在免费的 LDAP 实施中获得此功能?除了定义一个自定义属性外,我没有其他办法——我必须手动维护它。这不好,我想有一个自动化的解决方案,来照顾这些属性。

我已经尝试过的事情

注意:我在每次导入方案后都进行了完全重置,以确保我的测试不受之前更改的影响。

【问题讨论】:

  • (member=uid=testuser,ou=Users,DC=example,DC=com) 和以下基础:DC=example,DC=com 可以工作。
  • @jwilleke 这给了我组,而不是成员。 membergroupOfNames 的属性。这就是我遇到的问题:只有从组到他们的成员用户的引用,而不是从用户到他的组的其他方式。在 AD 中,memberOf 属性修复了这个问题。

标签: linux ldap apacheds apache-directory


【解决方案1】:

以下是两种查询方式,但仅适用于 Microsoft Active Directory:

解析all members(包括嵌套)安全组(至少需要 Windows 2003 SP2):

(memberOf:1.2.840.113556.1.4.1941:=CN=gogs-user,DC=example,DC=com)

并且 所有组 a User is a member of 包括嵌套组

(member:1.2.840.113556.1.4.1941:=CN=UserName,CN=Users,DC=YOURDOMAIN,DC=NET))

【讨论】:

  • 我不在 AD 上,我不想成为,正如我在第一句话中所说的那样。我过去与 AD 合作过,我知道这一点,但我需要在 ApacheDS 上为 LDAP 提供类似的解决方案。
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多