2016-05-02 10 views
6

Sto tentando di eseguire l'autenticazione con Dynamics CRM 2016 Online e Azure Active Directory. Sono stato in grado di seguire tutti i passaggi qui:Dynamics CRM 2016 API Resto online con credenziali client Flusso OAuth

https://msdn.microsoft.com/en-us/library/mt622431.aspx e https://msdn.microsoft.com/en-us/library/gg327838.aspx

ma questi procedura viene illustrato come set-up flusso di autenticazione nome utente. Vorrei utilizzare il flusso delle credenziali del cliente. Ho creato una nuova app in Azure AD: un'applicazione web. Ho un ID cliente e una chiave app e imposto le autorizzazioni per Dynamics CRM Online. Sono in grado di ottenere il token di accesso, ma le chiamate successive ottengo questo errore:

HTTP Error 401 - Unauthorized: Access is denied

C'è un passo che ho perso? Qualcuno sa di un post da qualche parte che fornisce dettagli su come far funzionare questo flusso?

Ecco il mio codice:

 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; 
+0

Simile a http://stackoverflow.com/questions/37215742/401-unauthorized-authentication-using-rest-api-dynamics-crm-with-azure-ad#comment61963502_37215742 potrebbe essere possibile che la loro API non supporti credenziali dell'applicazione. Può essere che stanno cercando un'autorizzazione specifica (concessa da un accesso delegato) che non esiste nel token di accesso acquisito dal flusso di credenziali. –

+0

Vedere la soluzione alla mia domanda simile http://stackoverflow.com/questions/37454539/using-adal-c-sharp-as-confidential-user-daemon-server-server-to-server-401-u/38008891 # 38008891 – IntegerWolf

+0

Possibile duplicato di [Uso di ADAL C# come utente/server demone confidenziale/server-a-server - 401 non autorizzato] (https://stackoverflow.com/questions/37454539/using-adal-c-sharp-as-confidential -user-daemon-server-server-to-server-401-u) –

risposta

Problemi correlati