API de descanso online do Dynamics CRM 2016 com fluxo de OAuth de credenciais do cliente
Estou tentando me autenticar com o Dynamics CRM 2016 Online e o Azure Active Directory. Consegui seguir todos os passos aqui:
https://msdn.microsoft.com/en-us/library/mt622431.aspx ehttps://msdn.microsoft.com/en-us/library/gg327838.aspx
mas essas etapas demonstram como configurar o fluxo de autenticação de nome de usuário. Eu gostaria de usar o fluxo de credenciais do cliente. Criei um novo aplicativo no Azure AD - um aplicativo Web. Tenho um ID de cliente e uma chave de aplicativo e configuro as permissões para o Dynamics CRM Online. Consigo obter o token de acesso, mas nas chamadas subsequentes recebo este erro:
Erro HTTP 401 - Não autorizado: acesso negado
Há um passo que eu perdi? Alguém conhece uma publicação em algum lugar que fornece detalhes sobre como fazer esse fluxo funcionar?
Aqui está o meu código:
string clientId = "<client id>";
string appKey = "<app key>";
// Get the authority and resource URL at runtime
AuthenticationParameters ap = AuthenticationParameters.CreateFromResourceUrlAsync(new Uri("https://<org address>/api/data/")).Result;
String authorityUrl = ap.Authority;
String resourceUrl = ap.Resource;
// Authenticate the registered application with Azure Active Directory.
AuthenticationContext authContext = new AuthenticationContext(authorityUrl);
ClientCredential clientCredential = new ClientCredential(clientId, appKey);
AuthenticationResult result = authContext.AcquireToken(resourceUrl, clientCredential);
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
HttpResponseMessage response = client.GetAsync("https://<org address>/api/data/v8.1/EntityDefinitions").Result;