Wir haben eine von Azure gehostete On-Premise-Instanz von Dynamics 2016, die als IFD ausgeführt wird und ADFS-Authentifizierung verwendet. Wir haben jetzt eine Anforderung für eine von Azure gehostete API, über die CRM-Web-API mit der Dynamics-Instanz zu kommunizieren. Um dies zu erreichen, müssen wir uns mithilfe der OAuth-Authentifizierung mithilfe von ADAL wie hier beschrieben authentifizieren https://msdn.microsoft.com/en-gb/library/gg327838.aspx, unter Verwendung der Microsoft.IdentityModel.Clients.ActiveDirectory-Bibliothek. Wir haben den folgenden Code ein Token von ADFSCRM Web Api ADFS OAuth
var resource = "https://reosurce.com/";
var clientId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
var authProvider = "https://adfs.server.com/adfs/oauth2/token";
var redirectUri = "https://crm2Environment.com/";
var authContext = new AuthenticationContext(authProvider, false);
var authToken = authContext.AcquireTokenAsync(resource, clientId, new
Uri(redirectUri), new PlatformParameters(PromptBehavior.Always)).
Result.AccessToken;
Das Codebeispiel läuft erfolgreich abzurufen, jedoch zur Verwendung in einem interaktiven Strömungssituation ist und sobald die AcquireTokenAsync Methode erscheint Login-Dialog aufgerufen wird (macht Sinn, da, wie Ansonsten weiß ADFS, ob es in Ordnung ist, zu authentifizieren), aber dies wird offensichtlich nicht auf der API funktionieren, die domänenunabhängig ist und es keine Möglichkeit gibt, Anmeldeinformationen an ADFS weiterzuleiten (nicht dass wir das sowieso wollen). Keine der alternativen Überladungen der AcquireTokenAsync-Methode scheint in der beschriebenen Situation auf ADFS anwendbar zu sein (aber offen für Vorschläge). Fehlt uns etwas? Gibt es eine andere Möglichkeit, das Token mit einem nicht interaktiven Flow abzurufen/ohne die Authentifizierung des Domänenkontos zu verwenden? Beachten Sie, dass die für Azure AD verfügbaren Beispiele im ADFS-Szenario nicht zu funktionieren scheinen und wir auch keinen Zugriff auf den aktuellen ADSF-Server haben oder haben, da dies von unserem Infrastrukturteam verwaltet wird (obwohl dies erforderlich ist) Machen Sie Änderungen am ADFS, das ist möglich)
Azure zu Azure-Diensten wird in dieser Situation nicht helfen, da das CRM vor Ort ist und IFD über ADFS – cirrus42