3

我们有带有 AD 模块 1.0.4 的 Sitecore 6.5。

DEPARTMENT\SitecoreUsers 的 AD 组中的用户可以登录 Sitecore,但 DEPARTMENT\Sitecore_Role1 组中的用户无法登录,即使 DEPARTMENT\Sitecore_Role1 组是 Sitecore_Users 的成员。

LDAP.IncludeIndirectMembership 设置为 true,并且在 DOMAIN\SitecoreUsers 中具有成员资格的所有组都显示在角色管理器中。我尝试将 Sitecore_Role1 角色添加为 sitecore\Sitecore 客户端用户的成员,但这仍然不允许 Sitecore_Role1 成员登录。

是否必须将我们所有的 AD 用户都添加到他们的 Sitecore_Role 组和 Sitecore_Users 组?我认为属于成员组应该允许他们登录到 Sitecore。有人可以让我直截了当吗?

我已经通过 Sitecore AD 模块管理指南进行了工作,并认为我已经正确设置了它,但这是我认为需要审查的相关设置。

正在使用的连接字符串是:

<add name="WUDOSISConnectionString" connectionString="LDAP://wudosis.wustl.edu:389/DC=department,DC=ourorg,DC=edu"/>

我们的广告设置如下

- Department
    + Groups
        * Sitecore
            - Sitecore_Users
            - Sitecore_Role1 (Member of Sitecore_Users)
            - Sitecore_Role2 (Member of Sitecore_Users)

system.web/membership/prividers、roleManager 和 profile 中的项目都有一个 customFilter = (memberOf=CN=Sitecore_Users,OU=Sitecore,OU=Groups,DC=department,DC=ourorg,DC=edu)

4

1 回答 1

1

获取 AD 组的后代成员的正确语法是:

(memberof:1.2.840.113556.1.4.1941:=CN=Sitecore_Users,OU=Sitecore,OU=Groups,  
DC=department,DC=ourorg,DC=edu)

如果要将组本身及其成员和成员组的成员包括在结果中,请使用:

(|(&amp;(objectCategory=group)(cn=Sitecore_Users))  
(memberof:1.2.840.113556.1.4.1941:=CN=Sitecore_Users,OU=Sitecore,OU=Groups,  
DC=department,DC=ourorg,DC=edu))

请注意,& 值替换了正常的 & 号,因为该行包含在站点的 web.config 中,并且 & 号不是有效的 xml 字符。

@JensMikkelsen 的评论使我改变了我的想法,从 Sitecore AD 模块的工作方式转变为思考 LDAP 过滤器的工作方式。对 stackoverflow 的更多研究导致了这个 stackoverflow答案,其中包含一些 LDAP文档的链接。额外的 google 搜索会导致更多 LDAP 语法文档

解决方案的关键是要意识到 memberOf 并没有像我想象的那样工作。它不会通过组成员关系向下级联,而是仅返回直接成员。为了进一步向下使用 LDAP_MATCHING_RULE_IN_CHAIN 的成员资格链是必要的。看起来像这样:

(memberof:1.2.840.113556.1.4.1941:=(cn=Group1,OU=groupsOU,DC=x))

使用 Jen 的想法,即使用 Active Directory 浏览器计算出正确的过滤器,我得到了上面的值。我使用了 Active Directory 浏览器,因为它允许我更改用户和 Active Directory 管理中心,因为它更容易弄清楚如何输入 ldap 过滤器,就像我将它用作 Sitecore AD 模块中的 customFilter 值一样。

于 2013-08-09T20:25:05.890 回答