Authentifizieren des Benutzers durch die Webdienste
Veröffentlicht: November 2016
Gilt für: Dynamics CRM 2015
Sie können die externe Clientauthentifizierungsfunktion von Microsoft Dynamics 365 verwenden, um eigene Client-Apps für Mobilgeräte wie Telefone und Tablets sowie für den Windows 8-Desktop zu entwickeln. Diese Funktion ist auch für nicht-.NET-Anwendungen verfügbar.
In diesem Thema
Überblick zur Authentifizierung
Technologieabhängigkeiten
Sicherheit
Benutzeranmeldung und Anwendungsregistrierung
Die Client-Anwendung
OAuth-Autorisierungsendpunkte
Ermitteln der OAuth-Endpunkt-URL
Angeben einer OAuth-Ressource
Überblick zur Authentifizierung
Entwickler, die moderne und mobile Apps erstellen, einschließlich der Apps, die nicht auf .NET Framework aufbauen, können auf die Geschäftsdaten von Microsoft Dynamics 365 über die SOAP- und OData-Endpunkte des Organisationswebdiensts zugreifen. Dieser Webdienst unterstützt bestimmte Authentifizierungsfunktionen aus dem OAuth-2.0-Protokoll.
In der folgenden Liste werden die Komponenten beschrieben, die bei einer modernen und mobilen App-Authentifizierung unterstützt werden:
Verwendung von JSON-Webtokens in der HTTP-Autorisierungskopfzeile
Authentifizierung für den OData-Dienst durch externe Apps (außerhalb des Browsers)
Authentifizierung für den Organization.svc/web-Dienst (SOAP) durch externe Anwendungen (außerhalb des Browsers)
Technologieabhängigkeiten
Die folgenden Technologien sind erforderlich, um externe Client-Anwendungen zu entwickeln und auszuführen, die zusammen mit den Microsoft Dynamics 365-Webdiensten OData und SOAP eine Authentifizierung durchführen:
Die Konfiguration von Ansprüchen ist für eine lokale Bereitstellung erforderlich.
AD FS auf TechNet: Windows Server 2012 R2.
Die folgenden Technologien sind optional, um externe Client-Anwendungen zu entwickeln und auszuführen, die zusammen mit den Microsoft Dynamics 365-Webdiensten OData und SOAP eine Authentifizierung durchführen:
Microsoft Azure-Active Directory-Authentifizierungsbibliothek (Active Directory Authentication Library; ADAL)
Sicherheit
Die folgenden Sicherheitsinformationen gelten für diese Authentifizierungsfunktion:
Das Authentifizierungstoken wird auf dem Gerät im geschütztem Speicher abgelegt. Unter dem Windows-Betriebssystem wird das Windows-Anmeldeinformationsverwaltung verwendet.
Die Funktion verwendet SSL (Secure Sockets Layer) für HTTP-Anforderungen.
Benutzeranmeldung und Anwendungsregistrierung
Die folgenden Informationen beziehen sich auf die Benutzeranmeldung und Anwendungsregistrierung.
Die Benutzeranmeldung für Microsoft Azure-Active Directory-Authentifizierungsbibliothek (Active Directory Authentication Library; ADAL) wird von einem Webbrowserkontext behandelt.
Die Anwendungsregistrierung wird durch Azure Active Directory für eine CRM Online-Bereitstellung verwaltet, und durch Active Directory Federation Services (AD FS) für eine lokale Version oder für Bereitstellung mit Internetzugriff (IFD). Sie können das Microsoft Azure-Verwaltungsportal oder die API verwenden, um Ihre App mit CRM Online zu registrieren.
Die Client-Anwendung
Der Umfang der Vorgänge, die eine externe Client-Anwendung ausführen kann, wird in der folgenden Liste zusammengefasst:
Bei der Verwendung des OData-Endpunkts werden Erstellungs-, Abruf-, Aktualisierungs- und Löschvorgänge unterstützt. Es gibt keine Unterstützung für die Ausführung von Meldungen oder den Abruf von Metadaten.
Wenn der SOAP-Endpunkt (Organization.svc/web) für moderne und mobile Anwendungen verwendet wird, ist der vollständige Webdienstfunktionsumfang verfügbar.
Wenn Sie Clientcode schreiben, der Anrufe beim Webservice tätigt, wird empfohlen, vor jedem Serviceanruf durch ADAL ein Token anzufordern. So kann ADAL bestimmen, ob eine Instanz des n Zugriffstokens wiederverwendet werden soll, eine Anforderung für ein neues unter Verwendung des Refresh-Tokens gestellt werden soll, oder ob der Benutzer aufgefordert werden soll, sich erneut anzumelden.
Ermitteln der OAuth-Endpunkt-URL
Die Möglichkeit zur Ermittlung der Zertifizierungsstelle für die Webdienstauthentifizierung während der Laufzeit wird als eine alternative Methode bereitgestellt, um die Zertifizierungsstelle in Anwendungen oder Konfigurationsdateien in zu erhalten, im Gegensatz zu fest programmierten OAuth-Anbieter-URLs.
Der Ermittlungsprozess wird gestartet, indem eine nicht autorisierte HTTP-Anfrage mit dem Begriff "Bearer" in der Kopfzeile der Authorization und der SOAP-Endpunkt-URL der Mandantenorganisation als Text der Anforderungsnachricht.
GET /XRMServices/2011/Organization.svc HTTP/1.1 Host: <org>.crm.dynamics.com Authorization: Bearer
Hinweis
Die Trägerabfrage ist jetzt optional. Ein GET ohne eine Autorisierungskopfzeile ergibt dieselben Ergebnisse.
Eine 401-Fehlermeldung wird zurückgegeben, mit einer Antwort, die einen authorization_uri-Parameter enthält. Der Wert dieses Parameters ist eine Zertifizierungsstellen-URL.
HTTP/1.1 401 Unauthorized WWW-Authenticate: Bearer authorization_uri=URI
Die Zertifizierungsstellen-Ermittlungsfunktion für SOAP-Clients ist nur verfügbar, wenn eine SdkClientVersion-Eigenschaft in der SOAP-Endpunkt-URL der Mandantenorganisation vorhanden ist. Eine Beispiel-URL wird unten angezeigt.
https://contoso.crm.dynamics.com/XRMServices/2011/Organization.svc/web?SdkClientVersion=6.1.0.533;
Der Wert für SdkClientVersion kann eine beliebige Versionsnummer mit mindestens einem "Dezimalpunkt" und größer als 6.0.0002.0000 sein. Es wird empfohlen, dass der SdkClientVersion-Eigenschaftswert auf die Produktbuildversion der SDK-Assemblys gesetzt wird, die mit der Client-Anwendung verknüpft wurden.
Das folgende Codebeispiel zeigt, wie die Zertifizierungsstellen-URL abgerufen wird. Beachten Sie, dass der Beispielcode das Microsoft Azure-Active Directory-Authentifizierungsbibliothek (Active Directory Authentication Library; ADAL) verwendet, das unter NuGet.org abgerufen werden kann. Darüber hinaus gibt es Open Source-Versionen dieser Bibliothek für Android und iOS.
/// <summary>
/// Discover the authentication authority.
/// </summary>
/// <param name="serviceUrl">The URL of the organization's SOAP endpoint. </param>
/// <returns>The authority URL.</returns>
/// <remarks>The service URL must contain the SdkClient property.</remarks>
/// <example>https://contoso.crm.dynamics.com/XRMServices/2011/Organization.svc/web?SdkClientVersion=6.1.0.533;</example>
public static string DiscoveryAuthority(Uri serviceUrl)
{
// Use AuthenticationParameters to send a request to the organization's endpoint and
// receive tenant information in the 401 challenge.
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters parameters = null;
HttpWebResponse response = null;
try
{
// Create a web request where the authorization header contains the word "Bearer".
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
// The response is to be encoded.
httpWebRequest.ContentType = "application/x-www-form-urlencoded";
response = (HttpWebResponse)httpWebRequest.GetResponse();
}
catch (WebException ex)
{
response = (HttpWebResponse)ex.Response;
// A 401 error should be returned. Extract any parameters from the response.
// The response should contain an authorization_uri parameter.
parameters = Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationParameters.
CreateFromResponseAuthenticateHeader((response.Headers)["WWW-Authenticate"]);
}
finally
{
if (response != null)
response.Dispose();
}
// Return the authority URL.
return parameters.Authority;
}
OAuth-Autorisierungsendpunkte
Eine alternative Methode zur Verwendung der OAuth-Ermittlung ist die Verwendung bekannter OAuth-Autorisierungsendpunkte. Beim Schreiben einer App, die mit den Microsoft Dynamics CRM 2015 und Microsoft Dynamics CRM Online 2015-Update-Webdiensten authentifiziert, müssen Sie in Ihrem Authentifizierungscode die OAuth-Anbieter-URLs wie in der folgenden Tabelle veranschaulicht verwenden.
Bereitstellung |
URL |
---|---|
Microsoft Dynamics CRM Online |
HYPERLINK "https://login.windows.net/common/oauth2/authorize" https://login.windows.net/common/oauth2/authorize (Mehrinstanz) https://login.windows.net/<tenant ID>/oauth2/authorize (einzelner Mandant) |
Microsoft Dynamics CRM 2015 (lokale Version/IFD) |
https://<serverFQDNaddress>/adfs/ls |
Ersetzen Sie die Adresse Ihres IFD-Servers, beispielsweise contoso.com in der Sicherheitstokendienst (STS)-URL. Die angezeigte STS-URL wird in der Standardinstallation von AD FS benötigt. Eine benutzerdefinierte Installation verwendet möglicherweise eine andere URL. Ersetzen Sie an der entsprechenden Stelle auch Ihre Mandanten-ID.
Es wird empfohlen, dass Sie die OAuth-Ermittlung immer mit CRM Online verwenden, da sich die Autorisierungsendpunkte mit der Zeit ändern können.
Angeben einer OAuth-Ressource
Beim der Authentifizierung mit Microsoft AzureActive Directory mithilfe des OAuth-Autorisierungscodeflusses, müssen Sie einen Wert für die Zielressource bereitstellen. Die Internetadresse der Stammorganisation, beispielsweise https://contoso.crm.dynamics.com, muss als "Ressourcen"-Abfragezeichenfolgenparameter im Aufruf des OAuth-Autorisierungsendpunkts verwendet werden.
// Obtain an authentication token to access the web service.
String resource = “https://contoso.crm.dynamics.com”;
_authenticationContext = new AuthenticationContext(_oauthUrl, false );
AuthenticationResult result = await _authenticationContext.AcquireTokenAsync( resource, clientID );
Weitere Informationen:Beispiel: Moderne OData-App für Windows 8-Desktop
Siehe auch
Schreiben von mobilen und modernen Apps
Exemplarische Vorgehensweise: Registrieren einer CRM-App bei Active Directory
Authentifizieren von Benutzern durch die Microsoft Dynamics CRM 2015-Webdienste
Blog: Vorstellung einer neuen Funktion in der Azure-AD-Entwicklervorschau: die Authentifizierungsbibliothek Azure
Serverseitige CRM-Authentifizierung mit Azure Active Directory
© 2017 Microsoft. Alle Rechte vorbehalten. Copyright