通过Web服务判断SharePoint组中是否存在用户

时间:2009-12-10 14:48:01

标签: sharepoint sharepoint-2007 web-services moss

我正在开发一个内部Web应用程序,它将使用预定义的SharePoint组来确定用户的安全级别。我做了一些研究,发现了SharePoint的“用户组”Web服务,其中包含“GetUserCollectionFromGroup()”方法,该方法将列出给定SharePoint组中的所有用户。

我遇到的问题是某些预定义的SharePoint组添加了Active Directory组,而不是单个用户。因此,当我调用GetUserCollectionFromGroup(“Members”)时,我会返回Active Directory组“DOMAIN \ domain users”的单个条目。有没有办法检查用户所属的用户或Active Directory组是否只是使用SharePoint Web服务的SharePoint组的成员?或者,我是否需要检查SharePoint组,然后查找任何和所有Active Directory组以查看该用户是否也是该成员?

3 个答案:

答案 0 :(得分:2)

Active Directory安全组在SharePoint中被视为“用户”。你无法以你想要的方式实现这一目标。

但是,由于您拥有DOMAIN \ group,因此可以在点击SharePoint Web服务API并使用System.DirectoryServices命名空间来解析用户后扩展代码。您可以找到有关如何从组here中获取用户的一个很好的示例。

答案 1 :(得分:1)

以下代码将检查用户是否在特定群组中。这包括检查任何成员AD组。您需要构建自定义SharePoint Web服务以从远程计算机调用此代码。 HTH

public static bool UserIsInGroup(SPUser user, SPGroup group)
        {
            try
            {
                using (SPSite site = new SPSite(group.ParentWeb.Site.ID, user.UserToken))
                {
                    using (SPWeb web = site.OpenWeb(group.ParentWeb.ID))
                    {
                        SPGroup impersonatedGroup = web.SiteGroups[group.Name];

                        return impersonatedGroup.ContainsCurrentUser;

                    }

                }



            }
            catch (Exception e)
            {

                 ///TODO: Log the exception
                  return false;

            }
        }

答案 2 :(得分:0)

请参阅以下内容以获取用户的所有AD组 http://urenjoy.blogspot.com/2009/04/getting-active-directory-groups-from.html
并使用AD组作为sharepoint用户来获取sharepoint组。