Я пытаюсь получить доступ к интерактивному REST API Dynamics CRM с помощью аутентификации Azure AD oAuth 2. Для этого я выполнил следующие шаги:
- Я зарегистрировал веб-приложение и/или веб-api в Azure
- Настроить разрешения для Dynamics CRM для делегирования разрешений "Доступ к CRM Online как пользователь организации"
- И создал ключ с истечением 1 года и сгенерировал идентификатор клиента.
После того, как веб-приложение было настроено на Azure, я создал консольное приложение в .NET/С#, которое использует ADAL для создания простого запроса, в этом случае для получения списка учетных записей:
class Program
{
private static string ApiBaseUrl = "https://xxxxx.api.crm4.dynamics.com/";
private static string ApiUrl = "https://xxxxx.api.crm4.dynamics.com/api/data/v8.1/";
private static string ClientId = "2a5dcdaf-2036-4391-a3e5-9d0852ffe3f2";
private static string AppKey = "symCaAYpYqhiMK2Gh+E1LUlfxbMy5X1sJ0/ugzM+ur0=";
static void Main(string[] args)
{
AuthenticationParameters ap = AuthenticationParameters.CreateFromResourceUrlAsync(new Uri(ApiUrl)).Result;
var clientCredential = new ClientCredential(ClientId, AppKey);
var authenticationContext = new AuthenticationContext(ap.Authority);
var authenticationResult = authenticationContext.AcquireToken(ApiBaseUrl, clientCredential);
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenticationResult.AccessToken);
var result = httpClient.GetAsync(Path.Combine(ApiUrl, "accounts")).Result;
}
}
Я извлекаю токен доступа успешно, но когда я пытаюсь выполнить httprequest для CRM, я всегда получаю 401 - Несанкционированный код состояния. Что мне не хватает?