Christian Lehnhoff
4 Dez 2018 | Aktualisiert am: 16 Dez 2022
Expertenbeiträge | 4 Min. Lesezeit

Wenn wir bei der Entwicklung einer Website aus irgendeinem Grund  Informationen aus Microsoft Dynamics CRM benötigen, kann das aufgrund der Dynamics-Sicherheitsvorkehrungen ganz schön knifflig werden.

Diese Anleitung zeigt Ihnen, wie Sie vorgehen müssen, um eine Verbindung Ihrer Web-Anwendung zu Ihrer Dynamics-CRM-Organisation herzustellen und um mit der die Funktion „WhoAmI“ der CRM Web API Details aus dieser zu erhalten.

Sie benötigen dazu: Grundkenntnisse in HTML und JavaScript, Microsoft Visual Studio und eine Dynamics-CRM-Organisation (das kann auch eine Testversion sein).

Vorgehensweise

1. Kopieren Sie dieses Beispiel-Projekt aus unserem öffentlichen Repository und öffnen Sie es.

2. Im index.html file findet sich im <head> folgendes Script:

Die Zeile bezieht sich auf die JavaScript Library „ADAL“ (Azure Active Directory Authentication Library). Diese Bibliothek ermöglicht es Ihrer Web-App, Tokens zur Absicherung von API-Aufrufen abzurufen und Authentifizierungen bereitzustellen.

3. Schauen wir uns den folgenden JavaScript-Code an:

Diese Variablen müssen geändert werden, um eine Authentifizierung erfolgreich durchführen zu können. Sie erhalten diese Werte bei der Registrierung Ihrer Web-App auf Azure.

4. Registrieren Sie nun Ihre Web-App auf Azure. Öffnen Sie dazu portal.azure.com und loggen Sie sich mit Ihren Anmeldedaten für Microsoft Dynamics CRM ein.

5. Wählen Sie in der Menüleiste Azure Active Directory und klicken Sie auf App-Registrierungen. Klicken Sie dann + Registrierung einer neuen Anwendung.

6. Wählen Sie einen Namen für Ihre neue App-Registrierung (dieser ist lediglich eine Gedankenstütze für Sie). Wählen Sie anschließend für Anwendungstyp Web-App/API und geben Sie folgende Anmelde-URL ein: http://localhost:10202/index.html.

Klicken Sie dann auf Erstellen.

7. Kopieren Sie die „Anwendungs-ID“ und ersetzen Sie in Ihrem Projekt den Inhalt der Variablen „clientId“ aus Schritt 3.

8. Klicken Sie zurück in der App-Registrierung auf Manifest und ändern Sie den Wert oauth2AllowImplicitFlow von „false“ zu „true“ und speichern Sie die Änderungen.

9. Um den Vorgang abzuschließen, müssen Sie der App im Active Directory gestatten, sich mit Dynamics zu verbinden.

a. Wählen Sie in den Einstellungen Ihrer neuen App die Option Erforderliche Berechtigungen aus und klicken Sie + Hinzufügen und anschließend Hiermit wählen Sie eine API aus. Wählen Sie dort Dynamics CRM Online und klicken im nächsten Schritt Hiermit wählen Sie Berechtigungen aus auf Delegierte Berechtigungen und bestätigen Sie mit Klick auf Auswählen.

b. Wählen Sie nun unter Erforderliche Berechtigungen die API von Dynamics CRM und klicken auf Berechtigungen erteilen.

10. Wenn Sie sich nun wieder den Code aus Schritt 3 anschauen, gibt es dort noch zwei weitere Variablen, die verändert werden müssen: tenant und organizationURI. Diese Variablen werden für die Verbindung zwischen Ihrer Web-Anwendung und Azure benötigt.

a. tenant: Das ist Ihre ID für Azure AD. Um Ihre tenant-ID zu erhalten, gehen Sie zu Azure und wählen Sie Azure Active Directory (wo Sie auch Ihre App registriert haben) und wählen Sie dann Eigenschaften. Dort finden Sie die Verzeichnis-ID mit einem alphanumerischen Code. Kopieren Sie diesen und ersetzen Sie damit den Inhalt der Variable tenant.

b. organizationURI: Ersetzen Sie den Inhalt dieser Variable durch die URL Ihrer CRM-Organisation.

Funktionstest

Wenn Sie das Projekt starten, öffnet es sich automatisch in Ihrem Standardbrowser. Klicken Sie auf den Log In-Button und geben Sie die Anmeldedaten Ihres Unternehmeein. Es wird der Name des angemeldeten Benutzers (also Ihr Nutzername) angezeigt. Wählen Sie nun Get Who Am I und Ihre User-ID wird angezeigt.

Wie geht es weiter?

Werfen Sie einen Blick auf diesen Teil des JavaScript-Codes:

Wie Sie sehen, ist die Variable organizationURI durch /api/data/v9.0/WhoAmI ergänzt. So hat der Code die Funktion „WhoAmI” der Dynamics Web API genannt. Sie können dies durch Web API Query-Daten oder andere Funktionen ersetzen.

Achtung: organizationURI, tenant und clientId sind Informationen, die ausschließlich für Sie bestimmt sind, um externe Abfragen oder Änderungen zu verhindern. Seien Sie also bei der Speicherung dieser Daten in Ihrer Web-Anwendung vorsichtig!

Answering