【问题标题】:Get list of all LDAP group memberships获取所有 LDAP 组成员的列表
【发布时间】:2017-09-12 07:45:23
【问题描述】:

我正在使用 FreeIPA 作为我的烧瓶应用程序的 LDAP 后端。到目前为止,我已经使用了带有 OpenLDAP 的 flask-simpleldap 来获取用户的组成员身份,这可以很好地使用以下选项:

LDAP_BASE_DN="dc=myrealm,dc=com"
LDAP_REALM_NAME="MyFunRealm"
LDAP_OBJECTS_DN="dn"
LDAP_USER_OBJECT_FILTER="(&(objectclass=inetorgperson)(uid=%s))"
LDAP_GROUP_MEMBERS_FIELD="member"
LDAP_GROUP_OBJECT_FILTER="(&(objectclass=groupofnames)(member=%s))"
LDAP_GROUP_MEMBER_FILTER="member=%s"
LDAP_GROUP_MEMBER_FILTER_FIELD="cn"

我想更改我的用户的 LDAP 结构以将组放在组内,但上述设置仅提供用户的“第一级”组。 (对不起,我不熟悉 LDAP 和它的术语)。

如何更改查询/过滤器以通过组中组成员身份获取用户所属的所有组的列表?

【问题讨论】:

  • 组中组是什么意思?过滤器(&(objectclass=groupofnames)(member=%s)) 将为您提供用户%smemberOf 的所有组,无论该组在树中的哪个位置。
  • 一个组可以包含用户或其他组。如果用户所在的组是另一个组的成员,我希望这两个组都出现在搜索中。我的问题中的搜索仅返回直接组成员身份。

标签: flask ldap openldap freeipa


【解决方案1】:

我认为考虑到您的设置是不可能的(即flask + openldap)

OpenLDAP 没有(据我所知)内置机制来对嵌套组执行过滤。 并且flask会为你做请求,所以你不能轻易实现递归搜索。

在其他目录(例如 AD)中,您可以指定用于过滤嵌套组的可扩展匹配规则,如下所示:

(&(objectclass=groupofnames)(member:1.2.840.113556.1.4.1941:=%s))

但是OpenLDAP中不存在这个特定的可扩展匹配规则

【讨论】:

  • 感谢您的回答。我暂时把这个问题留着。
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
相关资源
最近更新 更多