Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Externe Mandanten (weitere Informationen)
Wenn Ihre mobile App webbasierte Features wie eine Profilaktualisierungsseite oder ein Rewards-Dashboard enthält, erwarten Benutzer eine nahtlose Einmalige Anmeldung. Sie sollten nicht auf eine zweite Anmeldeaufforderung stoßen, nachdem sie sich bereits über die systemeigene App angemeldet haben.
In diesem Artikel wird erläutert, wie Sie einmaliges Anmelden (Single Sign-On, SSO) zwischen einer nativen mobilen Anwendung und einer Webressource implementieren, die in einer eingebetteten Webansicht gehostet wird (z WKWebView . B. unter iOS oder WebView unter Android). Im Gegensatz zu Systembrowsern können Sie mit eingebetteten Webansichten Netzwerkanforderungen bearbeiten, bevor sie gesendet werden. Mit dieser Funktion kann Ihre App den Authentifizierungsstatus des Benutzers direkt in Anforderungsheader einfügen.
Der empfohlene Fluss funktioniert wie folgt:
- Der Benutzer meldet sich über die systemeigene Benutzeroberfläche der mobilen App mit dem Native Auth SDK oder der nativen Authentifizierungs-API an.
- Vor dem Laden der Webansicht ruft die App ein gültiges Zugriffstoken aus dem SDK oder der API ab.
- Die App lädt die Webansicht mit einer benutzerdefinierten Anforderung, die das Zugriffstoken im
Authorization: Bearer <access_token>Header enthält. - Die Webressource überprüft das Token und gewährt sofort Zugriff.
Das folgende Diagramm zeigt die Interaktion zwischen Der Webressource, der mobilen App, dem SDK und dem Identitätsdienst (ESTS):
Voraussetzungen
- Eine mobile App mit systemeigener Authentifizierung, die mit dem nativen Authentifizierungs-SDK oder der nativen Authentifizierungs-API konfiguriert ist. Wenn Sie das SDK verwenden und Ihre App noch nicht eingerichtet haben, lesen Sie " Vorbereiten Ihrer Android-App für die systemeigene Authentifizierung " oder "Vorbereiten Ihrer iOS/macOS-App für die systemeigene Authentifizierung".
- Ein abgeschlossener Anmeldefluss in Ihrer nativen App. Anleitungen finden Sie unter Anmelden von Benutzern in einer mobilen Android-App oder unter Anmelden von Benutzern in einer mobilen iOS-App.
- Eine Webressource, die über HTTPS (TLS) bereitgestellt wird. Senden Sie keine Token über HTTP.
- Eine gemeinsame Clientidentität (Anwendungs-ID) zwischen der mobilen App und der Webressource. Ausführliche Informationen finden Sie unter Einschränkungen und Konfigurationsanforderungen.
Anmelden mit systemeigener Authentifizierung
Schließen Sie den Standardanmeldungsfluss mit dem nativen Authentifizierungs-SDK oder der systemeigenen Authentifizierungs-API ab. Wenn die Anmeldung erfolgreich das SDK verwendet, werden das Zugriffstoken, das ID-Token und das Aktualisierungstoken sicher zwischengespeichert. Wenn Sie die API direkt verwenden, ist Ihre App dafür verantwortlich, die empfangenen Token sicher zu speichern.
Ausführliche Schritte zur Implementierung der Anmeldung finden Sie unter:
- Android: Anmelden von Benutzern in einer mobilen Android-App (Kotlin)
- iOS/macOS: Anmelden von Benutzern in einer mobilen iOS-App (Swift)
Abrufen des Zugriffstokens
Wenn der Benutzer die Aktion zum Öffnen der Webansicht auslöst, stellen Sie sicher, dass die App über ein gültiges, nicht abgelaufenes Zugriffstoken verfügt, bevor Sie die Webressource laden.
Wenn Sie das native Auth SDK verwenden, fordern Sie ein Token lautlos an. Das SDK stellt eine getAccessToken() Methode bereit, mit der ein gültiges Token aus dem Cache abgerufen oder im Hintergrund aktualisiert wird. Ausführliche Informationen zum Abrufen von Zugriffstoken mit bestimmten Gültigkeitsbereichen finden Sie unter:
- Android: Abruf mehrerer Zugriffstoken
- iOS/macOS: Erwerben mehrerer Zugangstokens
Wenn Sie die native Authentifizierungs-API direkt verwenden, ruft Ihre App Token über den Endpunkt der API /oauth/v2.0/token ab. Ausführliche Informationen finden Sie in der Referenz zur nativen Authentifizierungs-API.
Fordern Sie das Token mit den genauen Bereichen an, die von der Webressource benötigt werden. Informationen zu Bereichsanforderungen finden Sie unter Einschränkungen und Konfigurationsanforderungen.
Laden der Webansicht mit Authentifizierung
Es gibt zwei Methoden, um den Authentifizierungsstatus an die Webansicht zu übergeben. Der empfohlene Ansatz verwendet Autorisierungs-Header. Ein auf Cookies basierender Fallback ist für veraltete Szenarien verfügbar, jedoch wird davon abgeraten.
Option A: Verwenden eines Bearertokens über HTTP-Header (empfohlen)
Fügt das Zugriffstoken direkt in den Authorization Header der ursprünglichen HTTP-Anforderung ein, die zum Laden der Webansicht verwendet wird. Dies ist die sicherste und robusteste Methode.
Dieser Ansatz wird bevorzugt, da er:
- Ist zustandslos: Es basiert nicht auf persistenten Cookies auf der Clientseite.
- Isoliert das Token: Es beschränkt das Token streng auf diesen spezifischen Anforderungsfluss.
- Vermeidet webbasierte Angriffsvektoren: Es umgeht häufig auftretende Sicherheitsprobleme, die mit browserverwalteten Sitzungen verbunden sind.
So laden Sie die Webansicht mit headerbasierter Authentifizierung:
- Erstellen Sie die URL für die Webressource. Stellen Sie sicher, dass https verwendet wird.
- Erstellen Sie ein benutzerdefiniertes Netzwerkanforderungsobjekt.
- Fügen Sie der Anforderung den Header
Authorization: Bearer <access_token>hinzu. - Laden Sie die Anforderung in die Webansichtskomponente (z. B.
WKWebViewauf iOS oderWebViewauf Android).
Option B: Cookies verwenden (nur Fallback)
Wenn die Zielwebressource die headerbasierte Authentifizierung nicht verarbeiten kann (z. B. bestimmte ältere Einzelseitenanwendungen), können Sie das Token als Cookie einfügen. Dieser Ansatz wird in der Regel aufgrund von Sicherheitsrisiken abgeraten.
Durch das Einfügen von Cookies in eine Webansicht wird der Authentifizierungsstatus einem browserverwalteten Mechanismus übertragen. Dadurch wird die Sitzung „ambient“ (automatisch an Anforderungen gebunden), was die App Webangriffen der Standardklasse aussetzt.
- XSS (siteübergreifendes Skripting): Die Sitzung ist anfällig für Entführer, wenn der Webinhalt kompromittiert wird.
- CSRF (cross-site request forgery): Es besteht ein Risiko für unbeabsichtigte authentifizierte Anforderungen.
- Sitzungsfixierung: Ein Angreifer kann die Sitzung steuern.
- Compliance: Bei diesem Ansatz besteht ein Konflikt mit den besten Sicherheitspraktiken (z. B. MASTG-KNOW-0018) hinsichtlich des Speicherns von sensiblen Zuständen in Cookie-Speichern von Webansichten.
Warning
Der cookiebasierte Ansatz wird bedingt genehmigt und generell davon abgeraten. Verwenden Sie sie nur, wenn die Zielwebressource die headerbasierte Authentifizierung nicht unterstützen kann.
Wenn Sie den cookiebasierten Ansatz verwenden, gelten die folgenden Anforderungen:
- Verwenden Sie ggf. vom Server ausgestellte Sitzungscookies.
- Vermeiden Sie das direkte Platzieren von Rohzugriffstoken in Cookies.
- Legen Sie Cookies mit den Attributen
HttpOnly,Secureund den entsprechendenSameSite-Attributen fest. - Erzwingen Sie strengen CSRF-Schutz auf serverseitiger Seite.
Verifizieren und speichern Sie das Token im Backend
Wenn die Anforderung die Webressource erreicht, verarbeitet das Back-End das Token, um die Sitzung einzurichten.
Überprüfen des Tokens
Der Webserver fängt eingehende Anforderungen ab und überprüft die Signatur und Claims des Tokens. Verwenden Sie Microsoft.Identity.Web (MISE) für ASP.NET Core-Backends, um die Validierung automatisch zu handhaben.
Stellen Sie sicher, dass der Zielgruppenanspruch (aud) des Tokens mit dem Bezeichner der Web-API und dem Ausstelleranspruch (iss) mit der erwarteten Autorität übereinstimmt.
Beibehalten der Sitzung
Die Webansicht speichert keine benutzerdefinierten Kopfzeilen für nachfolgende Navigationsereignisse (z. B. wenn der Benutzer einen Link auswählt). Um den authentifizierten Zustand nach der anfänglichen Anforderung beizubehalten, gibt der Server bei erfolgreicher Überprüfung des anfänglichen Bearertokens ein Standardsitzungscookies (Set-Cookie) aus.
Konfigurieren Sie das Sitzungscookies mit den folgenden Attributen:
HttpOnlySecure- Eine geeignete
SameSiteRichtlinie
Einschränkungen und Konfigurationsanforderungen
Um sicherzustellen, dass das für die mobile App ausgestellte Token von der Webressource akzeptiert wird, beachten Sie die folgenden Konfigurationen:
- Gemeinsame Clientidentität: Die mobile App und Web-App sollten dieselbe Client-ID (Anwendungs-ID) gemeinsam nutzen. Wenn sie unterschiedliche IDs haben, lehnt das Back-End das Token der mobilen App als Benutzergruppenkonflikt ab.
-
Bereichsausrichtung: Die mobile App fordert das Zugriffstoken mit genau den Bereichen an,
Profile.Readdie von der Webressource benötigt werden (z. B. ,Orders.Write).
Note
Diese Lösung ist speziell auf das Webansichtsszenario zugeschnitten. Eine allgemeinere Lösung, die SSO-Funktionen auf Systembrowser und andere komplexe Szenarien erweitert, ist für eine zukünftige Version geplant.