1

Ich versuche, für mit dem OData Client .net Dynamics 365 On-Premise verbindenAuthentifizieren zu Dynamics 365 On Premise

I durch Standardauthentifizierung zu authentifizieren versucht, aber das funktioniert nicht.

var c = new Microsoft.Dynamics.CRM.System(new Uri("https://mycrm01/crm/api/data/v8.2/")); 

c.SendingRequest2 += (o, requestEventArgs) => { 
    var creds = username + ":" + password; 
    var encodedCreds = Convert.ToBase64String(Encoding.ASCII.GetBytes(creds)); 
    requestEventArgs.RequestMessage.SetHeader("Authentication", "Basic" + encodedCreds); 
}; 

var contacts = c.Contacts.Where(x => x.Firstname=="testuser"); 
foreach (var contact in contacts) 
{ 

} 

Der Fehler Ich erhalte ist: HTTP-Fehler 401 - nicht autorisiert: Zugriff verweigert wird

Kann mir jemand helfen, wie dies geschieht?

Antwort

1

Im Allgemeinen verwende ich nur den OData Client von JavaScript. Bei Verwendung von .NET verwende ich die SDK-Bibliotheken, die Authentifizierung und Zugriff über die Klasse CrmServiceClient bieten.

Um das OData-Client von C# zu verwenden, dieser Artikel beschreibt die verschiedenen Methoden-Authentifizierung: https://msdn.microsoft.com/en-us/library/mt595798.aspx

Web-API-Authentifizierung Muster

Es gibt drei verschiedene Möglichkeiten, die Authentifizierung zu verwalten, wenn den Web-API. Mit JavaScript in Webressourcen

Wenn Sie die Web-API mit JavaScript in HTML-Webressourcen, Formularskripts oder Multifunktionsleistenbefehle verwenden, müssen Sie keinen Code für die Authentifizierung enthalten. In jedem dieser Fälle ist der Benutzer bereits authentifiziert von der Anwendung und Authentifizierung wird von der Anwendung verwaltet. Bei lokalen Bereitstellungen

Wenn Sie die Web-API für lokale Bereitstellungen verwenden, müssen Sie die Netzwerkanmeldeinformationen des Benutzers angeben. Das folgende Beispiel ist ein C# Funktion , dass ein Httpclient konfiguriert für einen bestimmten Benutzer des Netzwerks Anmeldeinformationen zurück: C#

private HttpClient getNewHttpClient(string userName,string 
password,string domainName, string webAPIBaseAddress) { 
HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential(userName, password, domainName) 
}); 
client.BaseAddress = new Uri(webAPIBaseAddress); 
client.Timeout = new TimeSpan(0, 2, 0); 
return client; 
} 

Mit Microsoft Dynamics 365 (online) oder Internet gegenüber Implementierungen

Wenn Verwenden Sie die Web-API für Dynamics 365 (online) oder eine lokale Bereitstellung für das Internet (IFD). Verwenden Sie OAuth wie unter Verbinden mit Microsoft Dynamics 365-Webdiensten mithilfe von OAuth beschrieben.

Wenn Sie eine einzelne Seite Anwendung (SPA) zu schaffen mit Hilfe von JavaScript Sie die adal.js Bibliothek verwenden können, wie in Anwendungs ​​OAuth mit Cross-Origin Resource Sharing beschrieben eine einzelne Seite Anwendung auf Microsoft Dynamics verbinden 365

Verwandte Themen