我正在开发一个内部Web应用程序,它将使用预定义的SharePoint组来确定用户的安全级别。我做了一些研究,发现了SharePoint的“用户组”Web服务,其中包含“GetUserCollectionFromGroup()”方法,该方法将列出给定SharePoint组中的所有用户。
我遇到的问题是某些预定义的SharePoint组添加了Active Directory组,而不是单个用户。因此,当我调用GetUserCollectionFromGroup(“Members”)时,我会返回Active Directory组“DOMAIN \ domain users”的单个条目。有没有办法检查用户所属的用户或Active Directory组是否只是使用SharePoint Web服务的SharePoint组的成员?或者,我是否需要检查SharePoint组,然后查找任何和所有Active Directory组以查看该用户是否也是该成员?
答案 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组。