Сообщите, существует ли пользователь в SharePoint Group через веб-сервис
Я работаю над внутренним веб-приложением, которое будет использовать предварительно определенные группы SharePoint для определения уровня безопасности пользователя. Я провел некоторое исследование и обнаружил, что веб-служба SharePoint "группа пользователей" имеет метод "GetUserCollectionFromGroup()", который перечисляет всех пользователей в данной группе SharePoint.
Проблема, с которой я сталкиваюсь, заключается в том, что к некоторым предопределенным группам SharePoint добавлены группы Active Directory, а не отдельные пользователи. Поэтому, когда я вызываю GetUserCollectionFromGroup("Members"), я получаю одну запись для группы Active Directory "DOMAIN\domain users\". Есть ли способ проверить, является ли пользователь или группа Active Directory, к которой принадлежит пользователь, членом группы SharePoint, использующей только веб-службы SharePoint? Или мне нужно будет проверить группу SharePoint, а затем найти все группы Active Directory, чтобы узнать, является ли этот пользователь также членом этой группы?
3 ответа
Группы безопасности Active Directory рассматриваются как "пользователи" в SharePoint. Вы не можете достичь этого так, как вы хотите.
Но поскольку у вас есть DOMAIN\group, вы можете расширить свой код после того, как вы нажмете API веб-сервисов SharePoint и использовать пространство имен System.DirectoryServices для разрешения ваших пользователей. Вы можете найти хороший пример того, как получить пользователей из группы здесь.
Код ниже проверит, входит ли пользователь в определенную группу. Это включает проверку любых членов группы AD. Вам нужно будет создать собственный веб-сервис SharePoint для вызова этого кода с удаленного компьютера. НТН
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;
}
}
Смотрите ниже, чтобы получить все группы AD от пользователя
http://urenjoy.blogspot.com/2009/04/getting-active-directory-groups-from.html
и использовать группы AD в качестве пользователя sharepoint для получения групп sharepoint.