#c# #azure #azure-active-directory #microsoft-graph-api #microsoft-graph-sdks
#c# #azure #azure-active-directory #microsoft-graph-api #microsoft-graph-sdks
Вопрос:
Я пытаюсь загружать и загружать файлы в свой sharepoint online, используя фоновую задачу (демон), которая часто запускается в моем ASP.NET Основное приложение. Поскольку это фоновая задача, идентификатор пользователя не используется. Вместо этого я попытался следовать этому документу, получая токен доступа с использованием области https://graph.microsoft.com/.default
видимости, а также имея свое корпоративное приложение в azure с определенными разрешениями, уже предоставленными администратором.
Я могу получить токен доступа, используя идентификатор клиента и секрет моего приложения. Однако, когда я пытаюсь запросить диски на определенном сайте в sharepoint, он просто останавливается, намекая мне, что он не может достичь пути. Я могу полностью достичь этого же пути, когда вместо этого использую свои учетные данные пользователя.
Я думаю, что, возможно, я пропустил шаг или какую-то задачу, связанную с администрированием Azure. Ниже приведен фрагмент кода, который показывает, что я могу получить токен доступа, но зависает при получении дисков.
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.
Редактировать: ниже приведен обновленный скриншот, показывающий добавленные и согласованные разрешения приложений:
Комментарии:
1. Что это за сообщение об ошибке?
2. Я добавил новый снимок экрана, показывающий разрешения приложения, но все еще есть проблемы. Сообщение об ошибке: в токене должны присутствовать либо scp, либо утверждение ролей.
Ответ №1:
На основе вашего изображения вы предоставили делегированные разрешения приложению. Вам необходимо предоставить разрешения для приложений. Делегированные разрешения применяются только при действиях от имени пользователя.
Комментарии:
1. Хотя вышесказанное верно, что мне нужно было предоставить разрешения для приложений, по какой-то причине это все равно не сработало для меня. Я смотрю на декодированный токен, который я получаю, и он не содержит в нем никаких ролей. Не уверен, что здесь делать.
2. Хорошо, вам потребовались разрешения, а затем нажмите кнопку Предоставить разрешения?
3. Да, затем он открывает браузер, пытающийся загрузить мое приложение localhost, но я получаю сообщение об ошибке: при обработке удаленного входа в систему возникла ошибка. —> Система. Исключение: ошибка корреляции.
4. Я имею в виду кнопку предоставления разрешений / предоставления согласия администратора на портале Azure.
5. Да, есть кнопка, и при нажатии на нее открывается окно браузера, направленное на мой локальный хост (который выдает ошибку).