通过 Web 服务判断用户是不是存在于 SharePoint 组中
Posted
技术标签:
【中文标题】通过 Web 服务判断用户是不是存在于 SharePoint 组中【英文标题】:Tell if user exists in SharePoint Group through web service通过 Web 服务判断用户是否存在于 SharePoint 组中 【发布时间】:2009-12-10 14:48:00 【问题描述】:我正在开发一个内部 Web 应用程序,该应用程序将使用预定义的 SharePoint 组来确定用户的安全级别。我进行了一些研究,发现 SharePoint 的“用户组”Web 服务具有“GetUserCollectionFromGroup()”方法,该方法将列出给定 SharePoint 组中的所有用户。
我遇到的问题是一些预定义的 SharePoint 组添加了 Active Directory 组,而不是单个用户。因此,当我调用 GetUserCollectionFromGroup("Members") 时,我会返回 Active Directory 组“DOMAIN\domain users\”的单个条目。有没有办法检查用户或用户所属的 Active Directory 组是否是仅使用 SharePoint Web 服务的 SharePoint 组的成员?或者我是否需要检查 SharePoint 组,然后查找所有 Active Directory 组以查看该用户是否也是那里的成员?
【问题讨论】:
【参考方案1】:Active Directory 安全组在 SharePoint 中被视为“用户”。您无法以您想要的方式实现这一目标。
但由于您确实拥有 DOMAIN\group,因此您可以在点击 SharePoint Webservices API 并使用 System.DirectoryServices 命名空间来解析您的用户后扩展您的代码。你可以找到一个很好的例子来说明如何从here 组中获取用户。
【讨论】:
谢谢,我希望这一切都可以通过 SharePoint Web 服务完成,但这还不错。现在似乎运行良好。【参考方案2】:下面的代码将检查用户是否在特定组中。这包括检查任何成员 AD 组。您将需要构建自定义 SharePoint Web 服务以从远程计算机调用此代码。高温
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;
【讨论】:
感谢您的帮助,唯一的问题是我无权在实际的 SharePoint 服务器上安装任何东西。我必须安装的唯一访问权限是在网络上的单独 Web 服务器上。【参考方案3】:请参阅以下内容以获取用户的所有 AD 组 http://urenjoy.blogspot.com/2009/04/getting-active-directory-groups-from.html 并使用 AD 组作为共享点用户来获取共享点组。
【讨论】:
以上是关于通过 Web 服务判断用户是不是存在于 SharePoint 组中的主要内容,如果未能解决你的问题,请参考以下文章
用于检查文件是不是存在于 Web 服务器上的 Oracle 过程