0

У меня есть веб-приложение, которое было определено на 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) от (безгласного) конфиденциального клиента.

ответ

1

Существует 2 типа разрешений, поддерживаемых AAD, которые соответствуют двум основным типам методов аутентификации.

Имеются разрешения приложений и делегированные разрешения, см. here.

Права доступа к приложениям: вашему клиентскому приложению необходимо получить доступ к веб-API непосредственно как сам (без контекста пользователя). Этот тип разрешения требует согласия администратора, а также не доступен для собственных клиентских приложений .

Делегированные разрешения: вашему клиентскому приложению необходимо получить доступ к веб-API в качестве пользователя с подпиской, но с доступом , ограниченным выбранным разрешением. Этот тип разрешения может быть , предоставленный пользователем, если разрешение не настроено как требующее согласия администратора.

Для использования ваших делегированных разрешений вы можете использовать Authorization Code Grant Flow.

Если вы используете Client Credential Flow для получения вашего токена доступа, ожидайте, что вы должны запросить разрешения на использование приложений; в противном случае вы получите несанкционированный доступ.

Дайте мне знать, если это поможет!

+0

Это ответ, который я ожидал, но не хотел слышать. –

+0

Почему вы так говорите? Делегированные и разрешения приложений - очень важная сегментация. Разрешения, которые клиентское приложение имеет для API, могут и должны сильно варьироваться в зависимости от контекста токенов. Если я создаю приложение для управления электронной почтой, разумное ожидание того, что мое приложение сможет удалить электронные письма, если я вхожу в систему, но не тогда, когда приложение не имеет токена пользователя и действует только в режиме приложения. –

+0

Согласен, это разумное ожидание. Это просто означает, что в моем случае мне, возможно, придется иметь учетную запись Dynamics для моего приложения, так как у меня нет пользовательского токена или пользователя для входа, чтобы я мог получить токен пользователя. –

Смежные вопросы