У меня есть веб-приложение, которое было определено на Azure AD, чтобы иметь разрешение на Dynamics 365 (делегированные разрешения).Возможно ли аутентификация с помощью Azure AD для доступа к API-интерфейсу Dynamics с использованием Credentials Client Credentials
И я использую Client Credentials Grant, чтобы получить токен доступа от azure AD. Так что я делаю это:
var clientCredential = new ClientCredential(clientId, clientSecret);
var result = authContext.AcquireTokenAsync(dynamicsTenant, clientCredential).Result;
Но я получаю HTTP 401, когда я пытаюсь получить доступ к веб-API, как это:
var response = httpClient.GetAsync(dynamicsTenant + "/api/data/v8.1/contacts").Result;
Он работает с Resource Owner Password Credentials Grant, как это:
var userCredential = new UserPasswordCredential("crmuser", "crmpwd");
var result = authContext.AcquireTokenAsync(dynamicsTenant, clientId, userCredential).Result;
Возможна ли конфигурация в Dynamics 365, которая может запрещать доступ?
Моя цель - использовать веб-интерфейс Dynamics (Online) от (безгласного) конфиденциального клиента.
Это ответ, который я ожидал, но не хотел слышать. –
Почему вы так говорите? Делегированные и разрешения приложений - очень важная сегментация. Разрешения, которые клиентское приложение имеет для API, могут и должны сильно варьироваться в зависимости от контекста токенов. Если я создаю приложение для управления электронной почтой, разумное ожидание того, что мое приложение сможет удалить электронные письма, если я вхожу в систему, но не тогда, когда приложение не имеет токена пользователя и действует только в режиме приложения. –
Согласен, это разумное ожидание. Это просто означает, что в моем случае мне, возможно, придется иметь учетную запись Dynamics для моего приложения, так как у меня нет пользовательского токена или пользователя для входа, чтобы я мог получить токен пользователя. –