Sitecore Active Directory间接成员资格

时间:2013-08-07 22:17:11

标签: active-directory ldap sitecore sitecore6

我们有Sitecore 6.5和AD Module 1.0.4。

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广告模块管理员指南,并认为我已经正确设置了它,但我认为这是相关的评论设置。

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

<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和个人资料中的项目都有customFilter = (memberOf=CN=Sitecore_Users,OU=Sitecore,OU=Groups,DC=department,DC=ourorg,DC=edu)

1 个答案:

答案 0 :(得分: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))

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

@JensMikkelsen发表的评论让我改变了我的思路,即Sitecore AD模块如何着手思考LDAP过滤器的工作原理。对stackoverflow的更多研究导致了这个stackoverflow answer,它有一个到某个LDAP documentation的链接。其他Google搜索会导致更多LDAP语法documentation

解决方案的关键是要意识到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值一样。