2016-07-07 3 views
1

habe ich versucht, die folgenden:Ist es möglich, einen Dienstprinzipal zu verwenden, um sich gegen dynamics crm online zu authentifizieren?

  AuthenticationParameters ap = await AuthenticationParameters.CreateFromResourceUrlAsync(
         new Uri($"{CrmServiceUrl}/api/data/")); 

      var _authenticationContext = new AuthenticationContext(ap.Authority); 

      AuthenticationResult result = await _authenticationContext.AcquireTokenAsync(ap.Resource, new ClientCredential(_clientID,secret)); 

      var client = new HttpClient(); 
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken); 

      var req = await client.GetAsync($"{CrmServiceUrl}/api/data/v8.1/accounts?$select=name&$top=3"); 
      Console.WriteLine(await req.Content.ReadAsStringAsync()); 

aber

HTTP Error 401 - Unauthorized: Access is denied 

clientid bekommen und Geheimnis ist ein azur ad Service Principal.

enter image description here

Antwort

0

Nicht das selbst getan, aber ich bin wahrscheinlich nicht erraten. Um auf Daten innerhalb von CRM zugreifen zu können, benötigen Sie ein Benutzerkonto innerhalb von CRM - so wird das Sicherheitsmodell von CRM nach der Authentifizierung angewendet.

Ich würde vorschlagen, hier Authenticate users in Microsoft Dynamics CRM suchen, die alle Möglichkeiten beschreibt, wie Sie mit CRM authentifizieren können.

+0

endete am Hinzufügen eines zusätzlichen Benutzers und dann den Ressourcen-Besitzer-Fluss gegen azurblau AD verwenden, um Token für diesen Benutzer zu erhalten, dann hat alles funktioniert. Aber keine Möglichkeit, ein Service-Prinzipal zu verwenden –

Verwandte Themen