Ich versuche, auf eine Dynamics CRM Online-REST-API mit Azure AD oAuth 2-Authentifizierung zuzugreifen. Um das zu tun, so folgte ich vor:
- Ich habe eine Web-Anwendung und/oder Web-api in Azure
- konfiguriert, um die Berechtigungen für Dynamics CRM Tragene Berechtigungen „Zugriff CRM Online als Organisation Benutzer“ haben
- Und erstellt einen Schlüssel mit einem Ablaufdatum von 1 Jahr und hielt die Client-ID generiert.
Nachdem die Web-App auf Azure konfiguriert wurde Ich habe eine Konsolenanwendung in .NET/C# erstellt, die ADAL verwendet eine einfache Anfrage zu machen, in diesem Fall eine Liste der Konten abzurufen:
401- Nicht autorisierte Authentifizierung mit REST API Dynamics CRM mit Azure AD
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;
}
}
Ich erhalte ein Access-Token erfolgreich, aber wenn ich versuche, einen httprequest zu CRM zu tun, bekomme ich immer eine 401 - Unauthorized Statuscode. Was vermisse ich?
ich seine falschen Berechtigungen auf dem Token glauben. Was Sie tun, ist die Verwendung von Anmeldeinformationen für die Anwendung, um contain zu erhalten. Die Berechtigungen, die Sie beim Hinzufügen von CRM ausgewählt haben, waren delegierte PErmissions. Beides sind verschiedene Dinge. Was passiert, wenn Sie User Creds eines Benutzers im selben Verzeichnis verwenden, um sich zu authentifizieren und darauf zuzugreifen? –
Ich habe bereits eine native Clientanwendung erstellt, mit der ich erfolgreich in CRM integriert habe, aber ich musste Benutzeranmeldeinformationen bereitstellen, um ein Token von Azure zu erhalten. Mein Ziel ist es, die Verwendung von Benutzeranmeldeinformationen überhaupt zu vermeiden. Zu diesem Zweck versuche ich ein Token durch Schlüsselaustausch (die Methode, die ich in der Post erklärt habe) oder durch ein Zertifikat zu bekommen. – AndreCavaca
Haben Sie das überprüft? https://msdn.microsoft.com/en-us/library/gg327838.aspx –