Ich habe Schwierigkeiten, die Dynamics 2016 CRM OData Web APIs von einer Konsolenanwendung zugreifen.401 beim Zugriff auf Dynamics CRM 2016 Web APIs
Wir haben Dynamics CRM 2016 installiert, konfiguriert mit Ansprüche basierte Authentifizierung und unter Verwendung von AD FS v3.0.
Mein Verständnis ist, dass eine Konsolen-App (oder Web-App) auf die Web-APIs mit Windows integrierte Authentifizierung (dh NTML oder Kerberos) ohne besondere Behandlung zugreifen sollte ... oder vielleicht sollte der OAuth-Flow funktionieren, wenn aktiviert .
Für einen normalen Benutzer Zugriff auf Dynamics „Seiten“, funktioniert die Authentifizierung in Ordnung (Umleitung auf AD FS Login-Seite), aber den OData-APIs zugreifen scheint nicht (zum Beispiel: https://crm.domain.org/api/discovery/v8.0/): arbeiten
- in einem Browser erhalte ich eine Anmeldeaufforderung von Windows und die Eingabe einer gültigen Berechtigungsnachweis immer zu einer HTTP 401 nicht autorisierte Fehler
- in einem brower, wenn ich auf eine Web-API-uRL nach haben angemeldet auf den Seiten navigieren, dann kann ich Zugriff auf die Web APIs (dh einige Cookies müssen gesetzt sein und ich bin bereits implizit autorisiert)
- von Code, ein Httpclient mit spezifischen gültigen Anmeldeinformationen (oder aktuellen Anmeldeinformationen) verwendet wird, ich auch
Things 401 bekommen habe ich versucht:
- wenn ich Ansprüche basierte Authentifizierung vollständig deaktivieren , Httpclient funktioniert gut und ich kann die OData APIs
zugreifen, wenn ich Ansprüche basierte Authentifizierung aktiviert, verlassen und aktivieren OAuth über Powershell
Add-PSSnapin Microsoft.Crm.PowerShell ; $ClaimsSettings = Get-CrmSetting -SettingType OAuthClaimsSettings; $ClaimsSettings.Enabled = $true ; Set-CrmSetting -Setting $ClaimsSettings ;
.Windows integrierte Authentifizierung funktioniert immer noch nicht, aber die Bearer-Authentifizierung ist jetzt möglich. Ich kann this snippet verwenden, um die OAuth Endpoint für Token Generation abzurufen, und verwenden Sie
AuthenticationContext.AcquireTokenAsync
ein Token auszustellen, und es dann in derAuthorization
HTTP Header passieren ... aber dann, egal was passiert, bekomme ich diesen Fehler:Bearer error=invalid_token, error_description =Error during token validation!, authorization_uri=https://our.adfs.domain.org/adfs/oauth2/authorize, resource_id=https://crm.domain.org/
Fehle ich etwas? ist das möglicherweise ein Konfigurationsproblem?
Ich habe auch die Frage auf den Dynamics CRM Community Foren veröffentlicht, nur für den Fall https://community.dynamics.com/crm/f/117/t/201151 – tsimbalar
haben Sie das Problem lösen können? –
Wir gaben diesen Pfad einfach auf und verwendeten schließlich das Dynamic SDK "auf dem Weg zur Obsoleszenz" anstelle der "empfohlenen" Web-APIs. – tsimbalar