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
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.
Klicken Sie in AD FS-Verwaltung mit der rechten Maustaste auf Anwendungsgruppen, und wählen Sie Anwendungsgruppe hinzufügen aus.
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.
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.
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.
Wählen Sie auf dem Bildschirm „Zugriffssteuerungsrichtlinie anwenden“ die Option Jedem Einzelnen Zugriff gewähren aus, und klicken Sie auf Weiter.
Stellen Sie auf dem Bildschirm „Anwendungsberechtigungen konfigurieren“ sicher, dass openid ausgewählt ist, und klicken Sie auf Weiter.
Klicken Sie auf dem Bildschirm „Zusammenfassung“ auf Weiter.
Klicken Sie auf dem Bildschirm „Abschließen“ auf Schließen.
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.
Wählen Sie auf dem Eigenschaftenbildschirm von „NativeAppToWebApi“ unter Web-API die Option NativeAppToWebApi – Web-API aus, und klicken Sie auf Bearbeiten....
Wählen Sie im Eigenschaftendialogfeld „NativeAppToWebApi – Web-API“ die Registerkarte Ausstellungstransformationsregeln aus, und klicken Sie auf Regel hinzufügen....
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.
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.
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.
Laden Sie das Beispiel hier herunter.
Öffnen Sie das Beispiel mit Visual Studio.
Öffnen Sie die Datei App.config. Ändern Sie Folgendes:
ida:Authority: Geben Sie h
ttps://[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.
Ö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.
Testen des Beispiels
In diesem Abschnitt wird gezeigt, wie Sie das oben konfigurierte Beispiel testen.
Nachdem die Codeänderungen vorgenommen wurden, erstellen Sie die Projektmappe neu.
Klicken Sie in Visual Studio mit der rechten Maustaste auf die Projektmappe, und wählen Sie Startprojekte festlegen... aus.
Vergewissern Sie sich auf den Eigenschaftsseiten, dass Aktion für alle Projekte auf Start festgelegt ist.
Klicken Sie oben in Visual Studio auf den grünen Pfeil.
Klicken Sie auf dem Hauptbildschirm der nativen App auf Anmelden.
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.
Sie werden an die AD FS-Anmeldeseite umgeleitet. Melden Sie sich an.
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.