Повышенные привилегии
Используйте политику только для приложений или учетные записи служб для повышения привилегий в надстройках SharePoint или других удаленно размещенных решениях.
Область применения: приложения для SharePoint | SharePoint 2013 | Надстройки SharePoint | SharePoint Online
Для повышения уровня привилегий в надстройках SharePoint и решениях ферм используются разные методы. Решения фермы повышают привилегии с помощью RunWithElevatedPrivileges(SPSecurity.CodeToRunElevated), который принадлежит серверной объектной модели SharePoint. Для повышения привилегий в надстройках SharePoint используется либо политика контекста приложения, либо учетные записи служб.
Вы можете использовать повышенные привилегии в надстройке, если:
Надстройка выполняет действия для пользователей, которые пользователи не имеют достаточных индивидуальных разрешений для выполнения. Администраторы могут не назначать пользователям определенные разрешения, так как уровень разрешений слишком высок.
Например, ваша организация может реализовать пользовательское решение по подготовке семейства веб-сайтов, которое пользователи должны использовать для создания семейств веб-сайтов. Ваша организация может указать, что все новые семейства веб-сайтов должны иметь определенные списки, типы контента или поля, связанные с ними. Если пользователи создают семейства веб-сайтов самостоятельно, они могут или не забыли создать эти объекты в новом семействе веб-сайтов. В этом сценарии пользователи создают семейства веб-сайтов с помощью надстройки, но пользователям не назначаются разрешения на создание семейств веб-сайтов по отдельности.
Ваша надстройка не действует от имени какого-либо пользователя; например, процесс управления или управление.
Авторизация политики только для приложений
Политика только для приложений использует OAuth для проверки подлинности надстройки. Если надстройка использует политику только для приложений, SharePoint проверяет разрешения только для субъекта надстройки. Это разрешения, предоставленные надстройке. Авторизация выполняется успешно, если надстройка имеет достаточные разрешения для выполнения задачи, независимо от разрешений, связанных с текущим пользователем. После успешной авторизации в надстройку возвращается маркер доступа. Надстройка будет использовать этот маркер доступа для выполнения любых операций, необходимых вашему коду.
Дополнительные сведения см . в статье Типы политик авторизации приложений в SharePoint 2013.
Примечание.
Политика только для приложений доступна только для надстроек, размещенных у поставщика. Надстройки, размещенные в SharePoint, которые обращаются к хост-сайту, должны использовать политику "пользователь и приложение".
Преимущества использования политики только для приложений в надстройке:
Вам не нужно предоставлять отдельную лицензию пользователя. Для учетных записей служб требуется отдельная лицензия пользователя.
Вы получаете более детальный контроль над разрешениями, чем с учетными записями служб. Например, вы можете применить разрешения FullControl в интернете, что невозможно при использовании учетных записей служб.
Политику только для приложений нельзя использовать со следующими API:
Профиль пользователя
Поиск
Чтобы использовать политику только для приложений, сначала необходимо предоставить разрешения надстройке с помощью appinv.aspx. В следующем коде из файла AppManifest.xml показано, как задать политику только для приложений и разрешения для надстройки.
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
</AppPermissionRequests>
Для использования политики только для приложений требуется, чтобы надстройка использовала авторизацию с низким или высоким уровнем доверия. Политика недоступна в междоменной библиотеке JavaScript SharePoint, которая является третьим способом получения авторизованного доступа к ресурсам SharePoint.
app@sharepoint разрешение больше не работает в современном пользовательском интерфейсе хранилища терминов. Это связано с тем, что app@sharepoint разрешение больше не требуется приложению для выполнения операций записи таксономии, если приложение зарегистрировано в Azure AD с необходимыми разрешениями ресурса для доступа только к таксономии приложения.
Авторизация с низким уровнем доверия
Надстройка может использовать авторизацию с низким уровнем доверия при использовании службы контроль доступа Microsoft Azure (ACS) для установления доверия между надстройкой, размещенной у поставщика, и вашим Office 365 сайтом или локальной фермой SharePoint. Дополнительные сведения см. в статье Три системы авторизации для надстроек SharePoint 2013.
Важно!
Использование Azure ACS (служб контроль доступа) для SharePoint Online прекращено с 27 ноября 2023 г. См. полное объявление о выходе из эксплуатации, чтобы узнать больше. Использование Azure ACS вне контекста SharePoint уже прекращено 7 ноября 2018 г. и сейчас заканчивается.
Прекращение использования означает, что эта функция не получит новых инвестиций, но она по-прежнему поддерживается. Окончание срока службы означает, что эта функция будет прекращена и больше не доступна для использования.
Чтобы получить ссылку на объект ClientContext , надстройка должна:
Получите маркер доступа с помощью TokenHelper.GetAppOnlyAccessToken.
Используйте TokenHelper.GetClientContextWithAccessToken, чтобы получить объект ClientContext.
Примечание.
Файл TokenHelper — это исходный код, созданный средствами разработчика Microsoft Office для Visual Studio. Для него нет справочной документации, но в классе TokenHelper есть подробные комментарии. Чтобы просмотреть комментарии к коду, создайте надстройку, размещенную у поставщика, в Visual Studio.
Примечание.
он код в этой статье предоставляется как есть, без каких-либо гарантий, явных или подразумеваемых, включая любые подразумеваемые гарантии пригодности для конкретной цели, товарной пригодности или отсутствия нарушения прав на нарушение прав.
Uri siteUrl = new Uri(ConfigurationManager.AppSettings["MySiteUrl"]);
try
{
// Connect to a site using an app-only token.
string realm = TokenHelper.GetRealmFromTargetUrl(siteUrl);
var token = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUrl.Authority, realm).AccessToken;
using (var ctx = TokenHelper.GetClientContextWithAccessToken(siteUrl.ToString(), token))
{
// Perform operations on the ClientContext object, which uses the app-only token.
}
}
catch (Exception ex)
{
Console.WriteLine("Error in execution: " + ex.Message);
}
Авторизация с высоким уровнем доверия
Если надстройка использует систему авторизации с высоким уровнем доверия (также известный как протокол S2S), она вызывает другой метод TokenHelper : TokenHelper.GetSAccessTokenWithWindowsIdentity.
Важно:TokenHelper.GetS2SAccessTokenWithWindowsIdentity используется для вызовов только для приложений и пользователей и приложений. Второй параметр метода, который содержит удостоверение пользователя, определяет, какая политика используется. Передайте значение NULL , чтобы использовать политику только для приложений.
Учетные записи служб
Используйте учетные записи служб для повышения привилегий надстройки только в том случае, если политика только для приложений не предоставляет достаточных разрешений для выполнения задачи. Кроме того, в некоторых сценариях требуется учетная запись пользователя. Например, необходимо использовать учетные записи служб, когда код работает с любым из следующих приложений-служб SharePoint:
Служба профилей пользователей с использованием клиентской объектной модели (CSOM)
Служба управляемых метаданных
Поиск
При планировании использования учетных записей служб в надстройке учитывайте следующее:
Для учетных записей служб требуется отдельная лицензия пользователя.
Создайте одну учетную запись службы для каждой надстройки или используйте одну учетную запись службы для всех надстроек в среде SharePoint.
Во время авторизации необходимо указать имя пользователя и пароль. Убедитесь, что учетные данные учетной записи службы хранятся или извлекаются безопасно.
Прежде чем надстройка сможет выполнять действие на сайте, учетным записям служб сначала должно быть предоставлено разрешение на доступ к сайту.
Примечание.
Надстройки, приобретенные в Магазине Office, не могут использовать учетные записи служб.
В следующем коде показано, как выполнить проверку подлинности с помощью SharePointOnlineCredentials с учетной записью службы.
using (ClientContext context = new ClientContext("https://contoso.sharepoint.com"))
{
// Use default authentication mode.
context.AuthenticationMode = ClientAuthenticationMode.Default;
// Specify the credentials for the service account.
context.Credentials = new SharePointOnlineCredentials("User Name", "Password");
}