Freigeben über


Szenario: Aufrufen einer Web-API durch eine native App

Gilt für: Windows Server 2022, Windows Server 2019, AD FS 2019 und höher

Erfahren Sie, wie Sie eine native App erstellen, die von AD FS 2019 authentifizierte Benutzer anmeldet, und wie Sie Token mithilfe der MSAL-Bibliothek zum Aufrufen von Web-APIs erhalten.

Bevor Sie diesen Artikel lesen, sollten Sie mit den AD FS-Konzepten und dem Flow zur Gewährung von Autorisierungscodes vertraut sein.

Übersicht

Overview

In diesem Flow fügen Sie Ihrer nativen App (öffentlicher Client) die Authentifizierung hinzu, die daher Benutzer anmelden kann und eine Web-API aufruft. Um eine Web-API aus einer nativen App aufzurufen, die Benutzer anmeldet, können Sie die Tokenerfassungsmethode AcquireTokenInteractive von MSAL verwenden. MSAL nutzt einen Webbrowser, um diese Interaktion zu aktivieren.

Um besser nachvollziehen zu können, wie Sie eine native App in AD FS konfigurieren, um interaktiv ein Zugriffstoken abzurufen, verwenden wir das hier verfügbare Beispiel und gehen die Schritte zur App-Registrierung und Codekonfiguration durch.

Voraussetzungen

  • GitHub-Clienttools
  • AD FS 2019 oder höher ist konfiguriert und wird ausgeführt
  • Visual Studio 2013 oder höher

App-Registrierung in AD FS

Dieser Abschnitt zeigt, wie Sie die native App als öffentlichen Client und Web-APIs als vertrauende Seite in AD FS registrieren.

  1. Klicken Sie in AD FS-Verwaltung mit der rechten Maustaste auf Anwendungsgruppen, und wählen Sie Anwendungsgruppe hinzufügen aus.

  2. Geben Sie im Assistenten zum Erstellen von Anwendungsgruppen als Name den Wert NativeAppToWebApi ein, und wählen Sie unter Client/Server-Anwendungen die Vorlage Systemeigene Anwendung mit Zugriff auf eine Web-API zugreift. Klicken Sie auf Weiter.

    Screenshot of the Welcome page of the Add Application Group Wizard showing the Native application accessing a Web API template highlighted.

  3. Kopieren Sie den Wert für den Clientbezeichner. Dieser wird später als Wert für ClientId in der Datei App.config der Anwendung verwendet. Geben Sie Folgendes als Umleitungs-URI ein: https://ToDoListClient.. Klicken Sie auf Hinzufügen. Klicken Sie auf Weiter.

    Screenshot of the Native application page of the Add Application Group Wizard showing the redirect U R I.

  4. Geben Sie auf dem Bildschirm „Web-API konfigurieren“ den folgenden Bezeichner ein: https://localhost:44321/. Klicken Sie auf Hinzufügen. Klicken Sie auf Weiter. Dieser Wert wird später in den Dateien App.config und Web.Config der Anwendung verwendet.

    Screenshot of the Configure Web API page of the Add Application Group Wizard showing the correct identifier.

  5. Wählen Sie auf dem Bildschirm „Zugriffssteuerungsrichtlinie anwenden“ die Option Jedem Einzelnen Zugriff gewähren aus, und klicken Sie auf Weiter.

    Screenshot of the Choose Access Control Policy page of the Add Application Group Wizard showing the Permit everyone option highlighted.

  6. Stellen Sie auf dem Bildschirm „Anwendungsberechtigungen konfigurieren“ sicher, dass openid ausgewählt ist, und klicken Sie auf Weiter.

    Screenshot of the Configure Application Permissions page of the Add Application Group Wizard showing open I D selected.

  7. Klicken Sie auf dem Bildschirm „Zusammenfassung“ auf Weiter.

  8. Klicken Sie auf dem Bildschirm „Abschließen“ auf Schließen.

  9. Klicken Sie in „AD FS-Verwaltung“ auf Anwendungsgruppen, und wählen Sie die Anwendungsgruppe NativeAppToWebApi aus. Klicken Sie mit der rechten Maustaste, und wählen Sie Eigenschaften aus.

    Screenshot of the A D F S Management dialog box showing the NativeAppToWebApi group highlighted and the Properties option in the dropdown list.

  10. Wählen Sie auf dem Eigenschaftenbildschirm von „NativeAppToWebApi“ unter Web-API die Option NativeAppToWebApi – Web-API aus, und klicken Sie auf Bearbeiten....

    Screenshot of the NativeAppToWebApi Properties dialog box showing the NativeAppToWebApi - Web A P I application highlighted.

  11. Wählen Sie im Eigenschaftendialogfeld „NativeAppToWebApi – Web-API“ die Registerkarte Ausstellungstransformationsregeln aus, und klicken Sie auf Regel hinzufügen....

    Screenshot of the NativeAppToWebApi - Web A P I Properties dialog box showing the Issuance Transform Rules tab.

  12. Wählen Sie im Assistenten zum Hinzufügen von Transformationsanspruchsregeln die Option Eingehenden Anspruch transformieren aus der Dropdownliste Anspruchsregelvorlage: aus, und klicken Sie auf Weiter.

    Screenshot of the Select Rule Template page of the Add Transform Claim Rule Wizard showing the Transform an Incoming Claim option selected.

  13. Geben Sie NameID in das Feld Anspruchsregelname: ein. Wählen Sie Name für Eingehender Anspruchstyp:, Name-ID für Ausgehender Anspruchstyp: und Allgemeiner Name für Format der ausgehenden Namens-ID aus. Klicken Sie auf Fertig stellen.

    Screenshot of the Configure Rule page of the Add Transform Claim Rule Wizard showing the configuration explained above.

  14. Klicken Sie im Eigenschaftendialogfeld „NativeAppToWebApi – Web-API“ auf „OK“ und dann auf das Eigenschaftendialogfeld „NativeAppToWebApi“.

Codekonfiguration

In diesem Abschnitt wird gezeigt, wie Sie eine native App konfigurieren, um einen Benutzer anzumelden und ein Token abzurufen, um die Web-API aufzurufen.

  1. Laden Sie das Beispiel hier herunter.

  2. Öffnen Sie das Beispiel mit Visual Studio.

  3. Öffnen Sie die Datei App.config. Ändern Sie Folgendes:

    • ida:Authority: Geben Sie https://[your AD FS hostname]/adfs ein.

    • ida:ClientId: Geben Sie die Client-ID aus Schritt 3 im Abschnitt „App-Registrierung in AD FS“ weiter oben ein.

    • ida:RedirectUri: Geben Sie den Umleitungs-URI-Wert aus Schritt 3 im Abschnitt „App-Registrierung in AD FS“ weiter oben ein.

    • todo:TodoListResourceId: Geben Sie den Bezeichner-Wert aus Schritt 4 im Abschnitt „App-Registrierung in AD FS“ weiter oben ein.

    • ida: todo:TodoListBaseAddress: Geben Sie den Bezeichner-Wert aus Schritt 4 im Abschnitt „App-Registrierung in AD FS“ weiter oben ein.

      Screenshot of the App config file showing the modified values.

  4. Öffnen Sie die Datei „Web.config“. Ändern Sie Folgendes:

    • ida:Audience: Geben Sie den Bezeichner-Wert aus Schritt 4 im Abschnitt „App-Registrierung in AD FS“ weiter oben ein.

    • ida:AdfsMetadataEndpoint: Geben Sie https://[your AD FS hostname]/federationmetadata/2007-06/federationmetadata.xml ein.

      Screenshot of the web config file showing the modified values.

Testen des Beispiels

In diesem Abschnitt wird gezeigt, wie Sie das oben konfigurierte Beispiel testen.

  1. Nachdem die Codeänderungen vorgenommen wurden, erstellen Sie die Projektmappe neu.

  2. Klicken Sie in Visual Studio mit der rechten Maustaste auf die Projektmappe, und wählen Sie Startprojekte festlegen... aus.

    Screenshot of the list that appears when you right-click the solution with the Set Start Up Projects option highlighted.

  3. Vergewissern Sie sich auf den Eigenschaftsseiten, dass Aktion für alle Projekte auf Start festgelegt ist.

    Screenshot of the Solution Property Pages dialog box showing the Multiple startup project option selected and all of the projects' actions set to Start.

  4. Klicken Sie oben in Visual Studio auf den grünen Pfeil.

    Screenshot of the Visual Studio UI with the Start option called out.

  5. Klicken Sie auf dem Hauptbildschirm der nativen App auf Anmelden.

    Screenshot of the To Do List Client dialog box.

Wenn der Bildschirm der nativen App nicht angezeigt wird, suchen Sie in dem Ordner auf Ihrem System, in dem das Projektrepository gespeichert ist, nach den *msalcache.bin-Dateien, und entfernen Sie sie.

  1. Sie werden an die AD FS-Anmeldeseite umgeleitet. Melden Sie sich an.

    Screenshot of the Sign In page.

  2. Geben Sie nach der Anmeldung den Text Native App zu Web-API erstellen in das Aufgabenelement erstellen ein. Klicken Sie auf Element hinzufügen. Dadurch wird der To-Do-Listendienst (Web-API) aufgerufen und das Element im Cache hinzugefügt.

    Screenshot of the To Do List Client dialog box with the new to do item populating the To Do Items section.

Nächste Schritte

AD FS OpenID Connect-/OAuth-Flows und Anwendungsszenarien