Freigeben über


Anmelden von Benutzern und Aufrufen einer API in einer Node.js-Beispielwebanwendung

In diesem Leitfaden wird Beispielcode verwendet, um zu zeigen, wie Sie Authentifizierung und Autorisierung zu einer Node.js-Webanwendung hinzufügen. Die Beispielanwendung meldet Benutzer bei einer Node.js-Web-App an, die dann eine .NET-API aufruft. Sie aktivieren die Authentifizierung und Autorisierung mithilfe der Details Ihres externen Mandanten. Die Beispielwebanwendung verwendet die Microsoft Authentication Library (MSAL) für Node, um die Authentifizierung zu verarbeiten.

In diesem Artikel führen Sie die folgenden Aufgaben aus:

  • Registrieren und konfigurieren Sie eine Web-API im Microsoft Entra Admin Center.

  • Aktualisieren Sie eine Node-Beispielwebanwendung und die ASP.NET-Web-API so, dass die Details Ihres externen Mandanten verwendet werden.

  • Ausführen und Testen der Beispiel-Webanwendung und API.

Voraussetzungen

Registrieren einer Web-API

In diesem Schritt erstellen Sie die Web- und Web-API-Anwendungsregistrierungen und geben die Bereiche Ihrer Web-API an.

Registrieren einer Web-API-Anwendung

  1. Melden Sie sich beim Microsoft Entra Admin Center mindestens mit der Rolle Anwendungsentwickler an.

  2. Wenn Sie Zugriff auf mehrere Mandanten haben, verwenden Sie das Einstellungen-Symbol im oberen Menü, um über das Menü Verzeichnisse + Abonnements zu Ihrem externen Mandanten zu wechseln.

  3. Navigieren Sie zu Identität>Anwendungen>App-Registrierungen.

  4. Wählen Sie + Neue Registrierung aus.

  5. Geben Sie auf der daraufhin angezeigten Seite Anwendung registrieren die Registrierungsinformationen Ihrer Anwendung ein:

    1. Geben Sie im Abschnitt „Name“ einen aussagekräftigen Anwendungsnamen ein, der den Benutzerinnen bzw. Benutzern der Anwendung angezeigt werden soll (beispielsweise ciam-client-app).

    2. Wählen Sie unter Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus.

  6. Wählen Sie Registrieren aus, um die Anwendung zu erstellen.

  7. Der Bereich Übersicht der Anwendung wird angezeigt, wenn die Registrierung abgeschlossen ist. Notieren Sie sich die Verzeichnis-ID (Mandant) und die Anwendungs-ID (Client), die im Quellcode Ihrer Anwendung verwendet werden sollen.

Konfigurieren von API-Bereichen

Diese API muss Berechtigungen verfügbar machen, die ein Client für den Aufruf der API anfordern muss:

Eine API muss mindestens einen Bereich (auch Delegierte Berechtigung genannt) veröffentlichen, damit die Clientanwendungen erfolgreich ein Zugriffstoken für einen Benutzer abrufen können. Führen Sie die folgenden Schritte aus, um einen Bereich zu veröffentlichen:

  1. Wählen Sie auf der Seite App-Registrierungen die von Ihnen erstellte API-Anwendung (ciam-ToDoList-api) aus, um ihre Seite Übersicht zu öffnen.

  2. Wählen Sie unter Verwalten die Option Eine API verfügbar machen aus.

  3. Wählen Sie oben auf der Seite neben Anwendungs-ID-URI den Link Hinzufügen aus, um einen für diese Anwendung eindeutigen URI zu generieren.

  4. Akzeptieren Sie den vorgeschlagenen Anwendungs-ID-URI, z. B. api://{clientId}, und wählen Sie Speichern aus. Wenn Ihre Webanwendung ein Zugriffstoken für die Web-API anfordert, fügt sie diesen URI als Präfix für jeden Bereich hinzu, den Sie für die API definieren.

  5. Wählen Sie unter Durch diese API definierte Bereiche die Option Bereich hinzufügen aus.

  6. Geben Sie die folgenden Werte ein, die Lesezugriff auf die API definieren, und wählen Sie dann Bereich hinzufügen aus, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    Bereichsname ToDoList.Read
    Zum Einwilligen berechtigte Personen Nur Administratoren
    Anzeigename der Administratoreinwilligung ToDo-Liste des Benutzers/der Benutzerin mit „ToDoListApi“ lesen
    Beschreibung der Administratoreinwilligung Geben Sie der App Lesezugriff auf die ToDo-Liste des Benutzers/der Benutzerin mithilfe von „ToDoListApi“.
    Zustand Enabled
  7. Wählen Sie erneut Bereich hinzufügen aus, und geben Sie die folgenden Werte ein, die einen Bereich für Lese- und Schreibzugriff auf die API definieren. Klicken Sie auf Bereich hinzufügen, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    Bereichsname ToDoList.ReadWrite
    Zum Einwilligen berechtigte Personen Nur Administratoren
    Anzeigename der Administratoreinwilligung ToDo-Liste des Benutzers mit der „ToDoListApi“ lesen und schreiben
    Beschreibung der Administratoreinwilligung Erlauben Sie der App das Lesen und Schreiben der ToDo-Liste des Benutzers mit Hilfe der „ToDoListApi“.
    Zustand Aktiviert
  8. Wählen Sie unter Verwalten die Option Manifest aus, um den API-Manifest-Editor zu öffnen.

  9. Legen Sie die Eigenschaft accessTokenAcceptedVersion auf 2 fest.

  10. Wählen Sie Speichern aus.

Erfahren Sie mehr über das Prinzip der geringsten Rechte beim Veröffentlichen von Berechtigungen für eine Web-API.

Konfigurieren von App-Rollen

Eine API muss mindestens eine Anwendungsrolle für Anwendungen veröffentlichen, die auch als Anwendungsberechtigung bezeichnet wird, damit die Clientanwendungen selbst ein Zugriffstoken erhalten können. Anwendungsberechtigungen sind der Typ von Berechtigungen, die APIs veröffentlichen sollten, wenn sie Clientanwendungen eine erfolgreiche Authentifizierung als sie selbst ermöglichen wollen und keine Benutzerinnen bzw. Benutzer anmelden müssen. Befolgen Sie die folgenden Schritte, um eine Anwendungsberechtigung zu veröffentlichen:

  1. Wählen Sie auf der Seite App-Registrierungen die von Ihnen erstellte Anwendung (z. B. ciam-ToDoList-api) aus, um ihre Seite Übersicht zu öffnen.

  2. Wählen Sie unter Verwalten die Option Anwendungsrollen aus.

  3. Wählen Sie App-Rolle erstellen aus, und geben Sie die folgenden Werte ein. Wählen Sie dann Anwenden aus, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    `Display name` ToDoList.Read.All
    Zulässige Mitgliedstypen Anwendungen
    Wert ToDoList.Read.All
    BESCHREIBUNG Geben Sie der App Lesezugriff auf die ToDo-Liste aller Benutzer*innen mithilfe von „ToDoListApi“.
  4. Wählen Sie erneut App-Rolle erstellen aus, und geben Sie die folgenden Werte für die zweite App-Rolle ein. Wählen Sie dann Anwenden aus, um Ihre Änderungen zu speichern:

    Eigenschaft Wert
    `Display name` ToDoList.ReadWrite.All
    Zulässige Mitgliedstypen Anwendungen
    Wert ToDoList.ReadWrite.All
    BESCHREIBUNG Geben Sie der App Lese- und Schreibzugriff auf die ToDo-Liste eines jeden Benutzers mit Hilfe der „ToDoListApi“.

Konfigurieren optionaler Ansprüche

Fügen Sie den optionalen Anspruch idtyp ein, damit die Web-API besser ermitteln kann, ob ein Token ein App-Token oder ein App- und Benutzertoken ist. Für den gleichen Zweck kann zwar auch eine Kombination aus Ansprüchen vom Typ scp und roles verwendet werden, die Verwendung des Anspruchs idtyp ist jedoch die einfachste Möglichkeit, um App-Token von App- und Benutzertoken zu unterscheiden. Der Wert dieses Anspruchs ist beispielsweise app, wenn das Token ein reines App-Token ist.

Führen Sie die Schritte im Artikel Konfigurieren optionaler Ansprüche aus, um dem Zugriffstoken idtyp-Anspruch hinzuzufügen:

  • Wählen Sie als Tokentyp die Option Zugriff aus.
  • Wählen Sie in der optionalen Anspruchsliste den Idtyp aus.

Erteilen von API-Berechtigungen für die Web-App

Führen Sie die folgenden Schritte aus, um Ihrer Clientanwendung (ciam-client-app) API-Berechtigungen zuzuweisen:

  1. Wählen Sie auf der Seite App-Registrierungen die von Ihnen erstellte Anwendung (z. B. ciam-client-app) aus, um ihre Seite Übersicht zu öffnen.

  2. Wählen Sie unter Verwalten die Option API-Berechtigungen.

  3. Wählen Sie unter Konfigurierte Berechtigungen die Option Berechtigung hinzufügen aus.

  4. Wählen Sie die Registerkarte Von meiner Organisation verwendete APIs aus.

  5. Wählen Sie in der Liste der APIs die API aus, z. B. ciam-ToDoList-api.

  6. Wählen Sie Delegierte Berechtigungen aus.

  7. Wählen Sie in der Berechtigungsliste ToDoList.Read, ToDoList.ReadWrite aus (verwenden Sie bei Bedarf das Suchfeld).

  8. Wählen Sie die Schaltfläche Berechtigungen hinzufügen aus. An diesem Punkt haben Sie die Berechtigungen ordnungsgemäß zugewiesen. Da der Mandant jedoch der Mandant eines Kunden ist, können die Consumer-Benutzer selbst diesen Berechtigungen nicht zustimmen. Um dieses Problem zu beheben, müssen Sie als Administrator im Namen aller Benutzer im Mandanten diesen Berechtigungen zustimmen:

    1. Wählen Sie Administratorzustimmung für <Name Ihres Mandanten> erteilen und dann Ja aus.

    2. Wählen Sie Aktualisieren aus, und vergewissern Sie sich, dass für beide Bereiche unter Status der Status Erteilt für <Name Ihres Mandanten> angezeigt wird.

  9. Wählen Sie in der Liste Konfigurierte Berechtigungen die Berechtigungen ToDoList.Read und ToDoList.ReadWrite nacheinander aus, und kopieren Sie dann den vollständigen URI der Berechtigung zur späteren Verwendung. Der vollständige Berechtigungs-URI ähnelt api://{clientId}/{ToDoList.Read} oder api://{clientId}/{ToDoList.ReadWrite}.

Klonen oder Herunterladen einer Beispielwebanwendung und Web-API

Um die Beispielanwendung zu erhalten, können Sie sie entweder von GitHub klonen oder als ZIP-Datei herunterladen.

  • Öffnen Sie zum Klonen des Beispiels eine Eingabeaufforderung, navigieren Sie zu der Stelle, an der Sie das Projekt erstellen möchten, und geben Sie den folgenden Befehl ein:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-javascript-tutorial.git
    
  • ZIP-Datei herunterladen. Extrahieren Sie sie an einem Dateipfad, dessen Name weniger als 260 Zeichen umfasst.

Installieren von Projektabhängigkeiten

  1. Öffnen Sie ein Konsolenfenster, und wechseln Sie in das Verzeichnis, das die Node.js/Express-Beispiel-App enthält:

    cd 2-Authorization\4-call-api-express\App
    
  2. Führen Sie die folgenden Befehle aus, um Web-App-Abhängigkeiten zu installieren:

    npm install && npm update
    

Konfigurieren der Beispiel-Web-App und -API

So verwenden Sie Ihre App-Registrierung im Client-Web-App-Beispiel:

  1. Öffnen Sie die App\authConfig.js-Datei in Ihrem Code-Editor.

  2. Suchen Sie den folgenden Platzhalter:

    • Enter_the_Application_Id_Here, und ersetzen Sie ihn mit der Anwendungs-ID (Client-ID) der zuvor von Ihnen registrierten Anwendung.
    • Enter_the_Tenant_Subdomain_Here, und ersetzen Sie ihn durch die Unterdomäne des Verzeichnisses (des Mandanten). Wenn Ihre primäre Mandantendomäne beispielsweise contoso.onmicrosoft.com lautet, verwenden Sie contoso. Wenn Sie ihren Mandantennamen nicht kennen, können Sie Ihre Mandantendetails auslesen.
    • Enter_the_Client_Secret_Here, und ersetzen Sie ihn durch den Wert des App-Geheimnisses, den Sie zuvor kopiert haben.
    • Enter_the_Web_Api_Application_Id_Here, und ersetzen Sie ihn durch die Anwendungs-ID (Client-ID) der zuvor von Ihnen kopierten Web-API.

So verwenden Sie Ihre App-Registrierung im Web-API-Beispiel:

  1. Öffnen Sie die API\ToDoListAPI\appsettings.json-Datei in Ihrem Code-Editor.

  2. Suchen Sie den folgenden Platzhalter:

    • Enter_the_Application_Id_Here, und ersetzen Sie ihn durch die Anwendungs-ID (Client-ID) der von Ihnen kopierten Web-API.
    • Enter_the_Tenant_Id_Here, und ersetzen Sie ihn durch die Verzeichnis-ID (Mandanten-ID), die Sie zuvor kopiert haben.
    • Enter_the_Tenant_Subdomain_Here, und ersetzen Sie ihn durch die Unterdomäne des Verzeichnisses (des Mandanten). Wenn Ihre primäre Mandantendomäne beispielsweise contoso.onmicrosoft.com lautet, verwenden Sie contoso. Wenn Sie Ihren Mandantennamen nicht kennen, können Sie Ihre Mandantendetails auslesen.

Ausführen und Testen der Beispiel-web-App und -API

  1. Öffnen Sie ein Konsolenfenster, und führen Sie dann mit den folgenden Befehlen die Web-API aus:

    cd 2-Authorization\4-call-api-express\API\ToDoListAPI
    dotnet run
    
  2. Führen Sie den Web-App-Client mit den folgenden Befehlen aus:

    cd 2-Authorization\4-call-api-express\App
    npm start
    
  3. Öffnen Sie Ihren Browser, und navigieren Sie zu http://localhost:3000..

  4. Wählen Sie die Schaltfläche Anmelden aus. Sie werden zur Anmeldung aufgefordert.

    Screenshot der Anmeldung bei einer Knoten-Webanwendung.

  5. Geben Sie auf der Anmeldeseite Ihre E-Mail-Adresse ein, wählen Sie Weiter aus, geben Sie Ihr Kennwort ein und wählen Sie dann Anmelden aus. Wenn Sie kein Konto haben, wählen Sie den Link Kein Konto? Erstellen Sie eins aus, um den Registrierungsflow zu starten.

  6. Wenn Sie die Registrierungsoption auswählen, schließen Sie den gesamten Registrierungsflow ab, nachdem Sie E-Mail-Adresse, Einmal-Passcode, das neue Kennwort und weitere Kontodetails eingegeben haben. Die daraufhin angezeigte Seite sieht in etwa wie im folgenden Screenshot aus. Wenn Sie die Anmeldeoption auswählen, wird eine ähnliche Seite angezeigt.

    Screenshot der Anmeldung bei einer Knoten-Webanwendung und Aufruf einer API.

API aufrufen

  1. Um die API aufzurufen, wählen Sie den Link Todolist anzeigen aus. Die daraufhin angezeigte Seite sieht in etwa wie im folgenden Screenshot aus.

    Screenshot der Bearbeitung der API-Aufgabenliste.

  2. Bearbeiten Sie die Aufgabenliste, indem Sie Elemente erstellen und entfernen.

Funktionsweise

Sie lösen bei jedem Anzeigen, Hinzufügen oder Entfernen einer Aufgabe einen API-Aufruf aus. Jedes Mal, wenn Sie einen API-Aufruf auslösen, ruft die Client-Web-App ein Zugriffstoken mit den erforderlichen Berechtigungen (Bereichen) ab, um einen API-Endpunkt aufzurufen. Um beispielsweise eine Aufgabe zu lesen, muss die Client-Web-App ein Zugriffstoken mit ToDoList.Read Berechtigung/Bereich abrufen.

Der Web-API-Endpunkt muss überprüfen, ob die Berechtigungen oder Bereiche im Zugriffstoken, die von der Client-App bereitgestellt werden, gültig sind. Wenn das Zugriffstoken gültig ist, antwortet der Endpunkt auf die HTTP-Anforderung, andernfalls antwortet er mit einem HTTP-Fehler „401 Unauthorized“.