Ich versuche, mit Dynamics CRM 2016 Online und Azure Active Directory zu authentifizieren. Ich konnte alle hier die Schritte folgen:Dynamics CRM 2016 Online Rest API mit Client-Anmeldeinformationen OAuth-Fluss
https://msdn.microsoft.com/en-us/library/mt622431.aspx und https://msdn.microsoft.com/en-us/library/gg327838.aspx
aber diese Schritte zeigen, wie Benutzerauthentifizierungsablauf einzurichten. Ich möchte den Client-Credentials-Flow verwenden. Ich habe eine neue App in Azure AD erstellt - eine Webanwendung. Ich habe eine Client-ID und einen App-Schlüssel und ich richte die Berechtigungen für Dynamics CRM Online ein. Ich bin in der Lage, die Zugriffstoken zu erhalten, aber bei zukünftigen Anrufe bekomme ich diesen Fehler:
HTTP Error 401 - Unauthorized: Access is denied
Gibt es einen Schritt, den ich verpasst? Kennt irgendjemand irgendwo einen Post, der Details darüber liefert, wie dieser Flow funktioniert?
Hier ist mein Code:
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;
Ähnlich http://stackoverflow.com/questions/37215742/401-unauthorized-authentication-using-rest-api-dynamics-crm-with-azure-ad#comment61963502_37215742 Es könnte möglich, dass ihre API keine Anwendungs-Credits unterstützt. Möglicherweise suchen sie nach einer bestimmten Berechtigung (die von einem delegierten Zugriff erteilt wurde), die nicht in dem Zugriffstoken vorhanden ist, das durch den Berechtigungsablauf erworben wurde. –
Bitte lesen Sie die Lösung für meine ähnliche Frage http://StackOverflow.com/questions/37454539/using-adal-c-sharp-as-confidential-user-daemon-server-server-to-server-401-u/38008891 # 38008891 – IntegerWolf
Mögliches Duplikat von [ADAL C# als vertraulichen Benutzer verwenden/Daemon Server/Server-zu-Server - 401 nicht autorisiert] (https://stackoverflow.com/questions/37454539/using-adal-c-sharp-as-confidential -user-daemon-server-server-zu-server-401-u) –