Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
SharePoint App-Only является более старой, но по-прежнему очень актуальной моделью настройки субъектов приложений. Эта модель работает как для SharePoint Online, так и для локальной среды SharePoint (выпуск 2013/2016/2019/subscription) и идеально подходит для подготовки приложений к миграции из локальной среды SharePoint в SharePoint Online. Ниже показано, как настроить субъект приложения с разрешениями на полный доступ клиента, но вы также можете предоставить разрешения только на чтение, используя этот подход.
Важно!
Использование Azure ACS (служб контроль доступа) для SharePoint Online прекращено с 27 ноября 2023 г. и прекратит работу со 2 апреля 2026 г. Ознакомьтесь с полным объявлением о прекращении работы, чтобы узнать больше. Использование Azure ACS вне контекста SharePoint уже прекращено 7 ноября 2018 г. и сейчас заканчивается.
Прекращение использования означает, что эта функция не получит новых инвестиций, но она по-прежнему поддерживается. Окончание срока службы означает, что эта функция будет прекращена и больше не доступна для использования.
Для новых клиентов приложения, использующие маркер доступа только для приложений ACS, по умолчанию отключены. Рекомендуется использовать модель разрешений приложения Entra ID , которая является современной и более безопасной. Но вы можете изменить поведение, запустив set-spotenant -DisableCustomAppAuthentication $false (требуется последняя версия администратора SharePoint PowerShell).
Настройка субъекта только для приложений с разрешениями клиента
Примечание.
Администратор семейства веб-сайтов не может зарегистрировать надстройку в Azure ACS в AppRegNew.aspx по умолчанию, если это явно не разрешено администратором клиента SharePoint. Дополнительные сведения см. в разделе Set-SPOTenant.
Перейдите на сайт в клиенте (например, https://contoso.sharepoint.com) и вызовите страницу appregnew.aspx (например, https://contoso.sharepoint.com/_layouts/15/appregnew.aspx). На этой странице заполните оставшиеся сведения, как показано на снимке экрана ниже.
Важно!
После нажатия Create вы получите идентификатор клиента и секрет клиента, сохраните полученные сведения (идентификатор клиента и секрет клиента), так как они понадобятся вам на следующем шаге!
Следующий шаг — предоставление разрешений только что созданному субъекту. Так как мы предоставляем разрешения на уровне клиента, это можно сделать только на странице appinv.aspx на сайте администрирования клиента. Вы можете связаться с этим сайтом через https://contoso-admin.sharepoint.com/_layouts/15/appinv.aspx. После загрузки страницы добавьте идентификатор клиента и найдите созданный субъект:
Чтобы предоставить разрешения, необходимо указать XML-код разрешений, описывающий необходимые разрешения. Так как это приложение должно иметь доступ ко всем сайтам , также использует поиск только для приложения, ему требуются следующие разрешения:
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>
При нажатии кнопки Создать откроется диалоговое окно согласия на разрешение. Нажмите кнопку Доверять, чтобы предоставить разрешения:
Важно!
Защитите созданное сочетание идентификатора и секрета клиента, как и учетная запись администратора. С помощью этого идентификатора или секрета клиента можно считывать и обновлять все данные в среде SharePoint Online.
После завершения подготовительных работ давайте перейдем к следующей главе, в которой показано, как использовать созданный субъект приложения с помощью сочетания идентификатора клиента и секрета.
Использование этого субъекта с PnP PowerShell
Если вы хотите использовать созданную регистрацию только для приложений с помощью PnP PowerShell, это можно сделать, подключись к локальной или сетевой среде SharePoint с помощью:
Connect-PnPOnline -Url https://contoso.sharepoint.com/sites/demo -ClientId [Your Client ID] -ClientSecret "[Your Client Secret]"
Примечание.
PnP PowerShell — это решение с открытым исходным кодом, поддержка которого предоставляется активным сообществом. Для инструментов с открытым исходным кодом не существует соглашения об уровне обслуживания в отношении поддержки корпорацией Майкрософт.
Использование этого субъекта в приложении с помощью библиотеки PnP Framework
На первом шаге добавьте пакет nuget библиотеки PnP Framework: https://www.nuget.org/packages/PnP.Framework. После этого можно использовать приведенную ниже конструкцию кода:
string siteUrl = "https://contoso.sharepoint.com/sites/demo";
using (var cc = new AuthenticationManager().GetACSAppOnlyContext(siteUrl, "[Your Client ID]", "[Your Client Secret]"))
{
cc.Load(cc.Web, p => p.Title);
cc.ExecuteQuery();
Console.WriteLine(cc.Web.Title);
};
Использование этого субъекта в приложении без использования библиотеки PnP Framework
После создания субъекта и получения согласия вы можете использовать идентификатор и секрет участника для запроса доступа. Класс TokenHelper.cs будет использовать идентификатор и секрет из файла конфигурации приложения.
using Microsoft.SharePoint.Client;
using System;
namespace AzureACSAuth
{
class Program
{
static void Main(string[] args)
{
string siteUrl = "https://contoso.sharepoint.com/sites/demo";
//Get the realm for the URL
string realm = TokenHelper.GetRealmFromTargetUrl(new Uri(siteUrl));
//Get the access token for the URL.
string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, new Uri(siteUrl).Authority, realm).AccessToken;
//Create a client context object based on the retrieved access token
using (ClientContext cc = TokenHelper.GetClientContextWithAccessToken(siteUrl, accessToken))
{
cc.Load(cc.Web, p => p.Title);
cc.ExecuteQuery();
Console.WriteLine(cc.Web.Title);
}
}
}
}
Пример app.config выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- Use AppRegNew.aspx and AppInv.aspx to register client id with secret -->
<add key="ClientId" value="[Your Client ID]" />
<add key="ClientSecret" value="[Your Client Secret]" />
</appSettings>
</configuration>
Примечание.
Вы можете легко вставить класс TokenHelper.cs в проект, добавив в решение пакет nuget AppForSharePointOnlineWebToolkit.