首页 > 解决方案 > Confluence、ldap 用户过滤器和 memberOf

问题描述

早晨,

我正在尝试创建一个用户过滤器以在 Atlassian 的汇合中使用,并且我对 memberOf 和 regex 有疑问。

(&(objectClass=Person)(memberOf=CN=Delivery Management Team,OU=EMEA,OU=Parks Lists,DC=emea,DC=company,DC=com))

返回属于该组的一些用户。然而,

(&(objectClass=Person)(memberOf=CN=Delivery Management*))

失败并出现错误。似乎正则表达式不适用于memberOf,或者在 ldap 中是否有语法方法来实现这个目标,而不是使用星号(对不起方尖碑)?

大卫

标签: regexldapconfluence

解决方案


我假设您在这种情况下使用 Active Directory,在这种情况下,问题只是 AD 不支持使用通配符的 DN 值的 LDAP 查询(除了 memberOf=* 类型查询,您正在寻找具有该值的任何内容放)。

https://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx

允许使用通配符“*”,除非是 DN 属性。DN 属性的示例有 distinctName、manager、directReports、member 和 memberOf。如果属性为 DN,则仅允许使用相等运算符,并且您必须为该值指定完整的可分辨名称(或为具有该属性的任何值的所有对象指定“*”字符)

我为完成您想要做的事情而采取的方法是为应用程序创建一个“所有用户”组 - 所以“所有 Confluence 用户”,然后是“Confluence Admins”、“Confluence Engineers”等访问级别的组,“汇合服务交付”。每当有人被添加到访问级别组之一时,将个人配置到组中的过程都会添加所有用户组(有点懒惰的编码,那;我不想检查他们是否已经是成员并且可以轻松忽略ldap 错误 20 值已存在);当最后一个访问级别组已从其帐户中删除时,帐户将从所有用户组中删除。

从所有成员组中添加和删除个人都可以批量完成——如果在我的环境中手动配置组,我可能会这样做。任何匹配 "(&(!(memberOf={the all users group))(|(memberOf={appgroup1})(memberOf={appgroup2})...(memberOf=appgroupN)))" 的人都会被添加到我的所有用户中团体; (&((memberOf={所有用户组))(!(|(memberOf={appgroup1})(memberOf={appgroup2})...(memberOf=appgroupN)))) 从我的所有用户组中删除。

我的用户过滤器是“(&(memberOf={所有用户组}))”,而谁可以实际访问由其他组成员控制的内容。


推荐阅读