Мне сложно создать приложение с потоком аутентификации ClientCredential для создания подписки в списке SharePoint.
Запрос :
var subscription = new Subscription
{
ChangeType = "updated",
NotificationUrl = "{validNotificationUrl}",
Resource = "sites/root/lists/{listId}",
ExpirationDateTime = DateTime.UtcNow.AddDays(2),
ClientState = "{clientState}"
};
subscription = await _graphClient.Subscriptions.Request().AddAsync(subscription);
Ответ :
Unauthorized 403
{
"error": {
"code": "ExtensionError",
"message": "Operation: Create; Exception: [Status Code: Forbidden; Reason: Access denied. You do not have permission to perform this action or access this resource.]",
"innerError": {
"date": "2020-08-04T13:01:27",
"request-id": "c480fa5d-4bbd-44a1-9f86-587548a29a19"
}
}
Я проверил запрос access_token, и у него есть необходимые разрешения ( Sites.ReadWrite.All, Sites.Manage.All согласно документации должно быть достаточно). Чтение подписок и создание списков отлично работает для приложения.
Я начал экспериментировать с различными конфигурациями, пытаясь изолировать проблему, и мне удалось:
- заставить приложение создавать подписку для пользователей ресурс.
- заставить делегированного пользователя создать подписку в списке
Я чувствую себя потерянным, так как я дал приложению больше разрешений, чем делегированный пользователь, и оно по-прежнему получает Unauthorized 403 и ответ ошибка мало что говорит о том, как решить эту проблему.
Существуют ли какие-либо конфигурации для подписок SharePoint List, о которых нужно позаботиться только для проверки подлинности приложений?