Microsoft Graph и доступ без пользователя - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь загружать и скачивать файлы с моей точки доступа в Интернете с помощью фоновой задачи (демона), которая часто запускается в моем приложении ASP.NET Core.Поскольку это фоновая задача, идентификация пользователя не используется.Вместо этого я попытался проследить за этим документом , получив токен доступа с помощью области действия https://graph.microsoft.com/.default, а также установив для моего корпоративного приложения на Azure определенные разрешения, уже предоставленные администратором.admin consent

Я могу получить токен доступа, используя идентификатор и секретный ключ моего приложения.Однако, когда я пытаюсь запросить диски на определенном сайте на sharepoint, он просто останавливается, намекая на то, что он не может найти путь.Я могу достичь этого же пути совершенно нормально, если вместо этого использую свои учетные данные.

Я думаю, что мне не хватает шага или какой-то лазурной задачи, связанной с администрированием.Ниже приведен фрагмент кода, который показывает, что я могу получить токен доступа, но останавливается при получении дисков.

var client = new ConfidentialClientApplication(id, uri, cred, null, new SessionTokenCache());
var authResult = await client.AcquireTokenForClientAsync(new[] {"https://graph.microsoft.com/.default"});
var token = authResult.AccessToken;  // get token successfully
var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider(async request => {request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token)}));
// stalls below
var drives = await graphServiceClient.Sites[<sharepoint_host>].SiteWithPath(<known_path>).Drives.Request().GetAsync(); 

Использование Microsoft Graph SDK в приложении ASP.NET Core 2.

Редактировать: ниже приведен обновленный снимок экрана, показывающий добавленные и согласованные разрешения приложения: updated screenshot

1 Ответ

3 голосов
/ 18 апреля 2019

На основании вашего изображения вы предоставили делегированные разрешения для приложения. Вам необходимо предоставить разрешения для приложения. Делегированные разрешения применяются только при работе от имени пользователя.

...