Dieser Artikel erklärt, wie man Passkeys in nativen Apps (iOS + Android) implementiert. Sie erfahren, welcher WebView-Typ für die Passkey-Authentifizierung empfohlen wird.

Vincent
Created: June 20, 2025
Updated: December 18, 2025

Passkeys Series: Native Apps
See the original blog version in English here.
+70-page Enterprise Passkey Whitepaper:
Learn how leaders get +80% passkey adoption. Trusted by Rakuten, Klarna & Oracle
| Ansatz | Akzeptanz | Passkeys erstellen | Passkeys verwenden | Passkeys verwalten | Technische Komplexität | OAuth-Support |
|---|---|---|---|---|---|---|
| Native Implementierung | 🟢🟢🟢 | Hohe Akzeptanz, beste UX, nahtlose Biometrie | Sofortige, stille Authentifizierung | Volle native Kontrolle | Mittel-Hoch | Erfordert separaten Flow |
| System-WebView | 🟢🟢 | Gute Akzeptanz, browserähnliche Erfahrung | Standard-Browser-UX, geteilter Schlüsselbund | Browser-basiertes Management | Gering | Ausgezeichnet |
| Eingebettete WebView | 🟢 | Geringere Akzeptanz, mehr Setup erforderlich | Native Unterstützung für iOS & Android (WebKit 1.12.1+), keine Conditional UI | Begrenzte Kontrolle | Mittel-Hoch | N/A |
Hinweis: System- und eingebettete WebViews werden oft kombiniert, wobei die System-WebView das Login (mit automatischer Freigabe von Anmeldeinformationen) übernimmt und die eingebettete WebView dann die Passkey-Verwaltung in den Einstellungen darstellt.
Wichtige Entscheidungsfaktoren:
Moderne mobile Plattformen bieten drei verschiedene Ansätze zur Integration von Passkeys in Ihre native App. Jeder Ansatz hat unterschiedliche Kompromisse in Bezug auf Benutzererfahrung, technische Komplexität und OAuth-Kompatibilität:
Native Implementierung: Passkey-Flows werden direkt in Ihre App mit Plattform-APIs (iOS AuthenticationServices, Android Credential Manager) integriert. Dies bietet die beste Benutzererfahrung mit nahtloser biometrischer Authentifizierung, erfordert aber einen mittleren bis hohen technischen Implementierungsaufwand.
System-WebView: Die Browser-Komponente der Plattform (iOS ASWebAuthenticationSession / SFSafariViewController, Android Chrome Custom Tabs) wird zur Abwicklung der Authentifizierung verwendet. Dies eignet sich hervorragend für OAuth-basierte Login-Flows und teilt Anmeldeinformationen mit dem Systembrowser.
Eingebettete WebView: Eine anpassbare Webansicht (iOS WKWebView, Android WebView) wird in Ihre App eingebettet, um die Web-Authentifizierung mit einem nativen App-Skelett wiederzuverwenden. Dies bietet ein nativ anmutendes Erscheinungsbild ohne URL-Leisten und volle Kontrolle über die WebView-UI. Es erfordert zusätzliches Setup, einschließlich Berechtigungen und Entitlements (iOS) sowie die Konfiguration der WebView mit AndroidX WebKit 1.12.1+ (Android), um die Passkey-Funktionalität zu aktivieren.
Die richtige Wahl hängt von der Authentifizierungsarchitektur Ihrer App ab, ob Sie OAuth-Anbieter nutzen, wie viel Kontrolle Sie über die Benutzeroberfläche benötigen und ob Sie eine native App von Grund auf neu erstellen oder Web-Komponenten wiederverwenden.
Eine native Passkey-Implementierung bietet die optimale Benutzererfahrung, bei der Authentifizierungs-Flows direkt in die Benutzeroberfläche Ihrer App mit plattformspezifischen APIs integriert werden. Nutzer profitieren von plattform-nativen Dialogen, nahtloser biometrischer Verifizierung und den schnellstmöglichen Anmeldezeiten.
Wann sollte man eine native Implementierung wählen:
preferImmediatelyAvailableCredentials nutzen, um
automatisch ein Passkey-Overlay anzuzeigen,
sobald Passkeys verfügbar sind. Dies ermöglicht die schnellste Anmeldung, ohne dass
zuerst eine Kennung eingegeben werden muss.Hauptvorteil: preferImmediatelyAvailableCredentials()
Native Implementierungen können preferImmediatelyAvailableCredentials() nutzen, um ein
automatisches Passkey-Overlay
zu erstellen, das sofort beim Start der App erscheint, wenn Passkeys verfügbar sind.
Dieser benutzername-lose Flow bietet das schnellstmögliche Login-Erlebnis – Nutzer sehen
ihre Passkeys sofort, ohne zuerst eine Kennung eingeben zu müssen. Diese Fähigkeit ist
exklusiv für native Implementierungen und in WebView-Varianten nicht verfügbar.
Während WebView-Implementierungen Conditional UI (Passkey-Vorschläge in Eingabefeldern) verwenden können, bietet das automatische Overlay der nativen Implementierung eine überlegene UX mit höheren Passkey-Nutzungsraten, da die Authentifizierung sofort beim Start der App beginnt.
Überblick über die technischen Anforderungen:
Die native Passkey-Integration erfordert ein kryptografisches Vertrauen zwischen Ihrer App und Ihrer Web-Domain. Ohne dieses wird das Betriebssystem alle WebAuthn-Operationen ablehnen. Wichtige Anforderungen:
/.well-known/ gehostet werdenDer große Vorteil: Passkeys, die auf Ihrer Website erstellt wurden, funktionieren nahtlos in Ihrer App und umgekehrt.
Die native Implementierung von Passkeys auf iOS beinhaltet Apples AuthenticationServices Framework, das eine API für WebAuthn-Operationen bereitstellt:
Wichtige Komponenten:
ASAuthorizationController: Verwaltet den Authentifizierungs-FlowASAuthorizationPlatformPublicKeyCredentialProvider: Erstellt Passkey-AnfragenEntwicklungs-Tipps
?mode=developer an Ihre AASA-URL an, um ein frisches Abrufen
zu erzwingen.Die native Passkey-Implementierung auf Android verwendet die Credential Manager API (oder die ältere FIDO2-API für Abwärtskompatibilität):
Wichtige Komponenten:
CredentialManager: Zentrale API für alle Operationen mit AnmeldeinformationenCreatePublicKeyCredentialRequest: Für die Registrierung von PasskeysGetCredentialRequest: Für die Authentifizierung mit PasskeysAnmerkung: Android fehlt derzeit die Unterstützung für Conditional UI-Tastaturvorschläge in nativen Apps, die iOS bietet (obwohl Conditional UI in Web-Apps funktioniert).
Die native Implementierung von Passkeys birgt wichtige Herausforderungen und Lektionen: Die Integration auf Betriebssystemebene kann Probleme auf verschiedenen Geräten und Betriebssystemversionen aufwerfen.
Obwohl man Passkeys mit reinen Plattform-APIs implementieren kann, beschleunigen speziell entwickelte SDKs die Entwicklung erheblich, indem sie die Komplexität von WebAuthn und Randfälle handhaben sowie integrierte Telemetrie bereitstellen. SDKs bieten auch mockbare Schnittstellen für Unit-Tests (entscheidend, da man Biometrie nicht in Simulatoren testen kann).
Empfehlung: Für native Implementierungen empfehlen wir die Verwendung der Corbado SDKs (iOS Swift Passkey SDK, Android Kotlin Passkey SDK), die die zahlreichen, in Produktionsumgebungen entdeckten Randfälle abdecken, zusätzliche Telemetrie und Testmöglichkeiten bieten.
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
Corbado proved to be a trusted partner. Their hands-on, 24/7 support and on-site assistance enabled a seamless integration into VicRoads' complex systems, offering passkeys to 5 million users.
Passkeys, die Millionen begeistern. Starten Sie mit der Adoption-Plattform von Corbado.
Kostenlos testenSystem-WebViews verwenden die native Browser-Komponente der Plattform, um die Authentifizierung innerhalb Ihrer App durchzuführen. Im Gegensatz zu vollständig nativen Implementierungen zeigen System-WebViews Webinhalte mit dem eigentlichen Systembrowser (Safari auf iOS, Chrome auf Android) an und behalten dabei geteilte Cookies, gespeicherte Anmeldeinformationen und die vertrauten Sicherheitsindikatoren des Browsers bei.
Wann sollte man eine System-WebView wählen:
Wichtige Vorteile:
Plattform-Komponenten:
ASWebAuthenticationSession (empfohlen für Authentifizierungs-Flows) oder
SFSafariViewController (allgemeines Surfen)Große Unternehmen wie Google und GitHub haben diesen Ansatz gewählt, um den Passkey-Login zu ihren mobilen Apps über WebView-Overlays auf bestehenden Web-Authentifizierungsseiten hinzuzufügen. Dies funktioniert gut, wenn eine vollständig native Neuentwicklung der Authentifizierung nicht sofort machbar ist.
iOS bietet zwei primäre System-WebView-Komponenten für die Authentifizierung:
ASWebAuthenticationSession (Empfohlen für die Authentifizierung):
SFSafariViewController (Allgemeines Surfen):
| Merkmal | ASWebAuthenticationSession | SFSafariViewController |
|---|---|---|
| Primärer Anwendungsfall | Authentifizierungs-Flows | Allgemeines Surfen im Web |
| OAuth/OIDC | Ausgezeichnet | Gut |
| Passkey-Unterstützung | Ja | Ja |
| Anpassbarkeit | Begrenzt | Minimal |
Wenn Ihre App ein OAuth-basiertes Login verwendet, ist ASWebAuthenticationSession
die empfohlene Wahl, da sie speziell für Authentifizierungsszenarien entwickelt wurde und
die beste Balance zwischen Sicherheit und
Benutzererfahrung bietet.
Chrome Custom Tabs (CCT) bieten ein von Chrome unterstütztes Authentifizierungserlebnis innerhalb Ihrer App:
Wichtige Merkmale:
OAuth-Integration: Chrome Custom Tabs sind das Android-Äquivalent zur iOS ASWebAuthenticationSession und bieten exzellente OAuth-Unterstützung bei gleichzeitigem Zugriff auf gespeicherte Passkeys.
Eingebettete WebViews bieten volle Kontrolle über das Rendern von Webinhalten innerhalb Ihrer App und ermöglichen die direkte Manipulation von Cookies, Sitzungen und Navigation ohne URL-Leiste. Diese Kontrolle erfordert jedoch zusätzliche technische Anforderungen, um die Passkey-Funktionalität zu ermöglichen.
Wann sollte man eine eingebettete WebView wählen:
Wichtiger Kontext:
Viele Apps verwenden einen hybriden Ansatz: Die System-WebView übernimmt die anfängliche OAuth-Authentifizierung (bei der Passkeys nahtlos funktionieren) und wechselt dann zur eingebetteten WebView für die Nach-Authentifizierung, um Passkeys in den Einstellungen zu verwalten. Die Herausforderungen entstehen, wenn versucht wird, Passkeys direkt in eingebetteten WebViews zu verwenden.
Technische Anforderungen:
Eingebettete WebViews erfordern im Vergleich zu System-WebViews ein zusätzliches Setup:
Plattform-Komponenten:
WKWebViewandroid.webkit.WebViewKompromisse:
Bei der Implementierung von Passkeys über WebViews ist das Verständnis der Unterscheidung zwischen System-WebViews und eingebetteten WebViews entscheidend. Die drei oben genannten Ansätze (Native Implementierung, System-WebView und eingebettete WebView) dienen jeweils unterschiedlichen Anwendungsfällen.
Auf iOS haben Sie mehrere Optionen, um Webinhalte in der App anzuzeigen:
Auf Android sind die Hauptoptionen:
android.webkit.WebView), das im
Wesentlichen ein Mini-Browser ist, der in Ihre Activities eingebettet werden kann. Es
ist hochgradig anpassbar, läuft aber im Prozess Ihrer App.In den folgenden Abschnitten werden wir uns diese WebView-Typen für iOS und Android genauer ansehen und erörtern, welche für Passkey-Authentifizierungsabläufe am besten geeignet sein könnten.
Apples Plattform bietet die drei oben aufgeführten WebView-Optionen. Ihre Wahl beeinflusst, wie reibungslos Passkeys innerhalb der App verwendet werden können:
Zum Testen des unterschiedlichen WebView-Verhaltens in iOS empfehlen wir die App WebView - WKWebView and UIWebView rendering.
WKWebView ist eine vielseitige WebView-Komponente für iOS. Entwickler können eine WKWebView einbetten, um Webinhalte mit einem hohen Maß an Kontrolle über die Benutzeroberfläche und das Verhalten darzustellen. WKWebView verwendet dieselbe Rendering-Engine wie Safari, ist also sehr performant und unterstützt moderne Web-Funktionen. Theoretisch kann WKWebView WebAuthn (und damit Passkeys) handhaben, wenn es korrekt konfiguriert ist, aber beachten Sie, dass einige erweiterte Browser-Funktionen aus Sicherheitsgründen eingeschränkt sein könnten. Ein Punkt, auf den man achten sollte, ist, dass WKWebView standardmäßig keine Cookies oder Schlüsselbunddaten mit Mobile Safari teilt. Benutzer müssen sich möglicherweise erneut anmelden, da ihre WebView-Sitzung von der Safari-Sitzung isoliert ist. Da der Inhalt von WKWebView von der App vollständig angepasst werden kann, sieht der Benutzer keine Adressleiste oder Safari-Benutzeroberfläche – was für das Branding großartig ist, aber bedeutet, dass der Benutzer weniger Hinweise hat, um die Legitimität der Seite zu überprüfen (ein Anliegen in Bezug auf Anti-Phishing). Einige Apps haben WKWebView sogar missbraucht, um Skripte einzuschleusen oder Inhalte zu verändern (z.B. wurde bei TikTok festgestellt, dass es Tracking-JS über seinen In-App-Browser einschleust), daher muss man darauf achten, WKWebView auf eine sichere, für den Benutzer vertrauenswürdige Weise zu verwenden.
SFSafariViewController bietet ein In-App-Safari-Erlebnis. Wenn Sie eine URL mit SFSafariViewController öffnen, ist es fast so, als würden Sie sie im echten Safari-Browser öffnen, außer dass der Benutzer innerhalb der Benutzeroberfläche Ihrer App bleibt. Der Vorteil für Passkeys ist erheblich: Da es im Wesentlichen Safari ist, sind der iCloud Keychain des Benutzers und die gespeicherten Passkeys zugänglich. Beachten Sie, dass Cookies seit iOS 11+ nicht mehr geteilt werden. Das bedeutet, wenn der Benutzer bereits einen Passkey für Ihre Seite hat, kann Safari ihn finden und sogar die Conditional UI Autovervollständigung für eine einfache Anmeldung anzeigen. SFSafariViewController ist weniger anpassbar (man kann seine Symbolleiste nicht wesentlich ändern), aber er handhabt automatisch viele Sicherheits- und Datenschutzfunktionen. Die URL-Leiste wird angezeigt, komplett mit dem Schlosssymbol für HTTPS, was den Benutzern Vertrauen gibt, dass sie sich auf der richtigen Domain befinden. Im Allgemeinen gilt SFSafariViewController als sicherer als eine rohe WKWebView und ist einfacher zu implementieren (Apple stellt es als Drop-in bereit). Der Hauptkompromiss ist, dass Sie etwas Kontrolle über das Erscheinungsbild opfern. Für einen Authentifizierungsablauf ist das normalerweise akzeptabel. Die Priorität liegt hier auf Sicherheit und einfacher Anmeldung, worin SFSafariViewController durch die Nutzung des Safari-Kontexts hervorragend ist.
| WKWebView | SFSafariViewController | |
|---|---|---|
| Benutzererfahrung | - Natives Gefühl: Benutzer könnten das Gefühl haben, dass der Webinhalt ein nativer Teil der App ist, da Entwickler das Aussehen und Verhalten an das Design der App anpassen können. - Autofill: Das automatische Ausfüllen mit Daten aus Safari ist möglich. | - Nahtlos: Nahtlose Benutzererfahrung durch Nutzung der Safari-Einstellungen des Benutzers, was ein konsistentes Surferlebnis zwischen nativer App und Browser gewährleistet. |
| Entwicklererfahrung | - Umfangreich anpassbar: Umfangreiche Anpassungs- und Konfigurationsmöglichkeiten verfügbar. - Flexibel: Viele APIs zur Interaktion mit Webinhalten. | - Mittelmäßig anpassbar: Begrenzte Anpassungsoptionen, insbesondere im Vergleich zu WKWebView. - Einfach: Einfacher zu implementieren im Vergleich zu WKWebView. |
| Performance | - Eher langsam: Abhängig von der Implementierung und dem Webinhalt können die Ladezeiten optimiert werden, aber sie können im Vergleich zu SFSafariViewController immer noch langsamer sein, aufgrund der zusätzlichen Verarbeitung von benutzerdefinierten Funktionen und Interaktionen. | - Eher schnell: Bietet typischerweise eine bessere Leistung, da es die Safari-Engine nutzt, die auf Geschwindigkeit und Effizienz optimiert ist und schnelle Ladezeiten für Webseiten ermöglicht. |
| Vertrauen und Wiedererkennung | - URL-Anzeige nicht erforderlich: WKWebView zeigt oft die URL nicht an, was es für Benutzer schwieriger macht, die Webseite zu verifizieren. Potenzial für bösartige Apps, dieses Verhalten nachzuahmen und Anmeldeinformationen zu phishen. | - Browser-ähnliche Erfahrung: Rendert Webseiten mit Safari und bietet eine „browser-ähnliche“ Erfahrung. Benutzer können die URL sehen und auf die Autofill-Funktionen von Safari zugreifen, was potenziell mehr Vertrauen aufgrund der vertrauten Oberfläche schafft. |
| Isolation | - Getrennt: Cookies und Sitzungen sind von Safari getrennt; Benutzer werden nicht automatisch in einer WKWebView angemeldet. | - Getrennt: Cookies und Sitzungen sind von Safari getrennt; Benutzer werden auch nicht automatisch in SFSafariViewController angemeldet. |
| Schwachstellen | - Sicher: Aufgrund des App-Sandboxing von Apple grundsätzlich sicher, aber Verhalten und Sicherheit hängen von der Implementierung der App ab. Potenzielle Schwachstellen, wenn nicht korrekt implementiert. | - Sicherer: Profitiert von den integrierten Sicherheitsfunktionen von Safari, einschließlich Anti-Phishing und Warnungen vor bösartigen Websites. Gilt allgemein als sicherer für die Anzeige von Webinhalten als WKWebView, aufgrund dieser Funktionen und der Vertrautheit der Benutzer mit Safari. |
| Sonstiges | - Funktionen nicht verfügbar: Einige Browser-Funktionen (z.B. WebAuthn) sind möglicherweise aufgrund von Sicherheitsbedenken und weil WKWebView im Anwendungskontext läuft, nicht vollständig zugänglich. - JavaScript-Injektion: Einige Apps, z.B. TikTok, injizieren Tracking-JavaScript in ihre In-App-WKWebView oder schränken die Benutzerkontrolle ein (z.B. Facebook). - Datenschutzprobleme: Mehr Community-Feedback bezüglich des Datenschutzes. | - Keine JavaScript-Injektion: Erlaubt nicht die Ausführung von JavaScript aus der App, was Sicherheit und Datenschutz verbessert. Unterstützt auch keine JavaScript-Alerts oder -Bestätigungen, was die Benutzererfahrung auf bestimmten Webseiten beeinträchtigen kann. - Reader-Modus: Bietet einen Lesemodus für eine saubere, leicht lesbare Version von Artikeln. |
SFAuthenticationSession / ASWebAuthenticationSession – Diese Klassen (letztere ist der neuere, Swift-freundliche Name) sind speziell für Anmeldeabläufe wie OAuth oder OpenID Connect konzipiert. Wenn Sie einen Benutzer über eine Webseite authentifizieren müssen (vielleicht bei einem externen IdP), sind diese Sitzungen die empfohlene Wahl auf iOS. Sie sind SFSafariViewController sehr ähnlich, da sie den Safari-Browser im Hintergrund nutzen und Cookies/Speicher mit Safari teilen. Der Hauptunterschied besteht darin, dass SFAuthenticationSession den Benutzer immer darüber informiert, dass die App sich über eine Webseite authentifizieren möchte (zur Sensibilisierung des Benutzers), und sie verwendet automatisch die vorhandene Safari-Sitzung des Benutzers, falls verfügbar.
Der Vorteil ist ein nahtloses SSO-Erlebnis – wenn der Benutzer bereits beim Anbieter in Safari angemeldet ist, kann diese Sitzung dieses Cookie verwenden, um eine weitere Anmeldung zu vermeiden. Für Passkeys ist dies wichtig, da es bedeutet, dass jede in Safari/iCloud Keychain gespeicherte Passkey-Anmeldeinformation auch hier verwendet werden kann. Apples offizielle Anleitung ist, ASWebAuthenticationSession für alles zu verwenden, was wie ein Anmeldeablauf aussieht. Die Vorteile sind verbesserter Datenschutz (Ihre App sieht niemals die Anmeldeinformationen oder Cookies, Safari kümmert sich darum) und integrierte SSO-Unterstützung. Der Nachteil ist, dass es auf Authentifizierungsabläufe beschränkt ist (man würde es nicht verwenden, um einfach beliebige Webinhalte in der App darzustellen). Zusammenfassend lässt sich sagen, dass ASWebAuthenticationSession bei der Wahl eines WebView-Ansatzes auf iOS typischerweise die beste Wahl für die Implementierung von Passkeys ist, da sie sicher ist, den Zustand mit Safari teilt und speziell für die Authentifizierung entwickelt wurde.
Bei Android fällt die WebView-Entscheidung zwischen der klassischen WebView und den Chrome Custom Tabs:
Zum Testen des unterschiedlichen WebView-Verhaltens in Android empfehlen wir die App WebView vs Chrome Custom Tabs.
Android WebView (android.webkit.WebView) ist eine Komponente, mit der Sie Webseiten in Ihr Activity-Layout einbetten können. Sie ähnelt der WKWebView darin, dass Sie die volle Kontrolle haben: Sie können die Navigation abfangen, JavaScript injizieren, die Benutzeroberfläche anpassen usw. Sie läuft auch im Prozess Ihrer App. Eine WebView für Passkeys zu verwenden bedeutet, dass Ihre App Ihre Web-Anmeldeseite lädt und diese Seite eine WebAuthn-Passkey-Zeremonie initiieren kann. Die moderne Android WebView unterstützt WebAuthn (vorausgesetzt, die WebView-Implementierung des Geräts ist über Android System WebView oder die Chrome-Komponente auf dem neuesten Stand). Eine wichtige Überlegung: Standardmäßig teilt eine Android WebView keine Cookies oder gespeicherten Anmeldeinformationen mit dem Chrome-Browser des Benutzers. Jeder in der WebView erstellte oder verwendete Passkey ist also möglicherweise für Chrome nicht bekannt und umgekehrt. Diese Isolation kann gut für die Sicherheit sein (Ihre App kann keine Browser-Cookies lesen), aber sie könnte Benutzer dazu zwingen, sich erneut anzumelden, wenn sie sich bereits in Chrome authentifiziert haben. Ein weiteres Problem ist das Vertrauen. Eine einfache WebView zeigt nicht die URL oder das SSL-Schlosssymbol an, sodass Benutzer Ihrer App vollständig vertrauen müssen, sie nicht zu phishen. Google hat sogar die Verwendung von WebView für Google-OAuth-Anmeldungen aufgrund potenzieller Phishing-Risiken verboten. Leistungsmäßig sind WebViews in Ordnung, können aber langsamer oder speicherintensiver sein als die Verwendung des Standardbrowsers des Benutzers, insbesondere beim Laden umfangreicher Seiten.
Chrome Custom Tabs (CCT) sind ein hybrider Ansatz. Sie ermöglichen Ihrer App, eine von Chrome gerenderte Seite zu öffnen, die aussieht, als wäre sie Teil Ihrer App. Sie können die Farbe der Symbolleiste anpassen, ein App-Logo hinzufügen usw., aber der Inhalt wird von Chrome in einem separaten Prozess gerendert. Für Passkeys haben CCTs mehrere Vorteile: Sie teilen die Cookies und Anmeldeinformationen des Benutzers mit Chrome, was bedeutet, dass, wenn der Benutzer einen Passkey über Chrome (Google Password Manager) gespeichert hat, der Custom Tab darauf zugreifen kann. Der Benutzer sieht auch die tatsächliche URL und die Sicherheitsindikatoren, was Vertrauen schafft. die Leistung ist oft besser – Chrome kann im Hintergrund „aufgewärmt“ werden, um schneller zu laden. Und wichtig ist, dass die Sicherheit stark ist: Da es im Wesentlichen die Chrome-App ist, schützen Dinge wie Google Safe Browsing die Sitzung, und Ihre App kann keine beliebigen Skripte in die Seite injizieren (was bestimmte Angriffe verhindert).
Der Nachteil ist, dass der Benutzer Chrome (oder einen unterstützten Browser) installiert und auf dem neuesten Stand haben muss. Die meisten Android-Benutzer haben das, aber auf einigen Geräten in bestimmten Regionen könnte dies ein Problem sein. Insgesamt sind Chrome Custom Tabs bei der Wahl eines eingebetteten Web-Ansatzes auf Android für Passkey-Flows zu empfehlen, da sie eine gute Balance zwischen Integration und Sicherheit bieten. Tatsächlich sind sie in vielerlei Hinsicht analog zu iOS' SFSafariViewController/ASWebAuthSession – sie nutzen den Standardbrowser für die Authentifizierung.
(Nebenbemerkung: Apples WKWebView vs. SFSafariViewController und Androids WebView vs. CCT haben viele Parallelen. Sowohl Safari VC als auch Chrome Tabs teilen den Browser-Status und bieten eine bessere Sicherheit, während WKWebView/Android WebView mehr Kontrolle geben, aber den Webinhalt isolieren. Für Passkeys ist das Teilen des Status (Cookies, Anmeldeinformationsspeicher) normalerweise wünschenswert, damit der Passkey nahtlos abgerufen und erstellt werden kann.)
| Merkmal | WebView | Chrome Custom Tab |
|---|---|---|
| Benutzererfahrung | - Flexibilität: Bietet einen reichhaltigen Satz von APIs zur Interaktion mit Webinhalten und zur Verwaltung von Benutzerinteraktionen, einschließlich der Handhabung von JavaScript-Dialogen und Berechtigungsanfragen. - Konsistenz: Die Verwaltung einer konsistenten UX, insbesondere bei vielfältigem Webinhalt, kann eine Herausforderung sein. | - Browser-Funktionen: Teilt Funktionen wie Datensparmodus und synchronisierte Autovervollständigung über Geräte hinweg. - Zurück-Button: Ermöglicht Benutzern die einfache Rückkehr zur App mit einem integrierten Zurück-Button. - Abhängigkeit: Basiert auf der Chrome-App, die möglicherweise nicht auf allen Benutzergeräten verfügbar oder aktualisiert ist. - Weiterleitung zum Browser: Bestimmte Funktionalitäten können Benutzer zur Chrome-App weiterleiten, was die Benutzererfahrung potenziell stören kann. - Teilweise Custom Tabs: Nur ein Teil des Bildschirms kann für den Chrome Custom Tab verwendet werden, während der Rest die native App anzeigt. - Side-Sheet: Im Querformat und auf Geräten mit großem Bildschirm wird der Chrome Custom Tab nur auf einer Seite des Bildschirms angezeigt, während der Rest des Bildschirms die native App zeigt. |
| Entwicklererfahrung | - Umfangreich anpassbar: Bietet umfangreiche Anpassungsoptionen/Anforderungen. - Interaktivität: Bietet zahlreiche APIs zur Interaktion mit Webinhalten und zur Verwaltung von Benutzerinteraktionen. | - Anpassbar: Ermöglicht die Anpassung der Symbolleistenfarbe, des Aktionsbuttons, der unteren Symbolleiste, benutzerdefinierter Menüpunkte und Ein-/Aus-Animationen. - Callback: Liefert einen Callback an die Anwendung bei einer externen Navigation. - Sicherheitsfunktionen: Bietet Out-of-the-Box-Funktionen, wodurch die Notwendigkeit entfällt, Anfragen, Berechtigungen oder Cookie-Speicher zu verwalten. |
| Performance | - Mäßige Performance: Bietet möglicherweise nicht das gleiche Leistungsniveau wie Chrome Custom Tabs (CCT). | - Pre-Warming: Beinhaltet das Vorwärmen des Browsers im Hintergrund und das spekulative Laden von URLs, um die Ladezeit der Seite zu verbessern. - Priorität: Verhindert, dass Apps, die einen Custom Tab starten, während dessen Nutzung beendet werden, indem ihre Wichtigkeit auf „Vordergrund“ erhöht wird. |
| Vertrauen und Wiedererkennung | - URL & SSL nicht sichtbar: Die URL- und SSL-Informationen sind in einer WebView nicht von Natur aus sichtbar. Sofern der App-Entwickler diese Funktionen nicht implementiert, wissen Benutzer nicht, ob sie sich auf der richtigen Website oder einer Phishing-Seite befinden. | - URL & SSL sichtbar: Verwendet den tatsächlichen Chrome-Browser zum Rendern von Seiten. Benutzer können die URL und das SSL-Zertifikat sehen (was anzeigt, ob die Verbindung sicher ist). Dies kann den Benutzern das Vertrauen geben, dass sie nicht auf einer Phishing-Seite sind. |
| Isolation | - Läuft im Prozess der App: Wenn eine App eine Schwachstelle aufweist, die die Ausführung von bösartigem Code ermöglicht, besteht das Risiko, dass die WebView kompromittiert werden könnte. WebView erhält jedoch auch Updates, aber ihr Verhalten und ihre Sicherheit können stärker von der sie nutzenden App abhängen. - Kein Teilen von Cookies / Sitzungen: Teilt keine Cookies oder Sitzungen mit dem Hauptbrowser des Geräts, was Isolation bietet, aber möglicherweise dazu führt, dass sich Benutzer erneut anmelden müssen. | - Läuft im Prozess von Chrome: Als Teil von Chrome laufen Custom Tabs im selben Prozess und haben dieselben Sicherheitsupdates und Funktionen wie Chrome. - Geteilter Cookie-Jar und Berechtigungsmodell: Stellt sicher, dass sich Benutzer nicht erneut auf Websites anmelden oder Berechtigungen erneut erteilen müssen. - Chrome-Einstellungen & Präferenzen: Nutzt die Einstellungen und Präferenzen von Chrome. |
| Schwachstellen | - Callbacks zum Stehlen von Anmeldeinformationen: Zu den potenziellen Schwachstellen gehört, dass manchmal JavaScript erforderlich ist, was die Tür für andere Apps öffnet, bösartigen Code auszuführen, wie z.B. das Registrieren von Callbacks, die versuchen, Benutzernamen und Passwörter abzufangen. - Phishing: Zusätzlich könnte eine bösartige App eine andere Webseite öffnen, die den Link-Flow in einem Phishing-Versuch nachahmt. | - Google Safe Browsing: Setzt Googles Safe Browsing ein, um sowohl den Benutzer als auch das Gerät vor gefährlichen Websites zu schützen. - Sichere Browser-Dekoration: Stellt sicher, dass der Benutzer immer die exakte URL sieht, mit der er interagiert, und die Zertifikatsinformationen der Website einsehen kann, was das Risiko von Phishing reduziert. Darüber hinaus erlauben Custom Tabs keine JavaScript-Injektion. |
| Sonstiges | - Google hat WebViews verboten, um Benutzer in Google-Konten anzumelden. |
Unabhängig davon, für welchen Implementierungsansatz Sie sich entscheiden, müssen bestimmte technische Anforderungen erfüllt sein, um die Passkey-Funktionalität zu ermöglichen. Dieser Abschnitt bietet eine umfassende Anleitung zur Konfiguration von Well-Known-Zuordnungsdateien, iOS-Entitlements und der Android-WebView-Konfiguration.
Hinweis zu verwalteten Geräten: Das Verhalten von Passkeys ändert sich erheblich auf verwalteten Geräten, bei denen Mobile Device Management (MDM)-Richtlinien die Speicherung von Anmeldeinformationen steuern. Informationen zum Testen von Passkeys auf verwalteten Geräten finden Sie unter Passkeys auf verwalteten iOS- und Android-Geräten.
Native und eingebettete WebView-Flows erfordern Zuordnungsdateien, um ein kryptografisches Vertrauen zwischen Ihrer App und Ihrer Web-Domain herzustellen. System-WebView (ASWebAuthenticationSession) und Chrome Custom Tabs erfordern keine App-zu-Website-Zuordnung.
Die AASA-Datei stellt die Verbindung zwischen Ihrer iOS-App und Ihrer Web-Domain her und ermöglicht es Passkeys, auf beiden Plattformen zu funktionieren.
Dateispeicherort: https://yourdomain.com/.well-known/apple-app-site-association
Konfigurationsanforderungen:
/.well-known/apple-app-site-association auf Ihrer Domainapplication/json.well-known-PfadBeispiel AASA-Datei:
{ "webcredentials": { "apps": ["TEAMID123.com.example.app"] } }
AASA-Caching und Testen:
Apple speichert AASA-Dateien aggressiv (bis zu 24-48 Stunden) über ein CDN, was die Entwicklung und das Testen erschweren kann. Um das Caching während der Entwicklung zu umgehen:
?mode=developer an Ihre zugehörige Domain in Xcode an⚠️ Wichtig: Verwenden Sie ?mode=developer NICHT in Produktions-Releases. Dieser
Parameter ist nur für die Entwicklung gedacht – die Verwendung in der Produktion
verhindert, dass iOS Ihre AASA-Datei ordnungsgemäß erkennt, was die Passkey-Funktionalität
beeinträchtigt.
Validierung: Verwenden Sie den AASA-Validator von Apple, um Ihre Konfiguration zu überprüfen.
Android verwendet Digital Asset Links, um die Beziehung zwischen Ihrer App und Ihrer Website zu überprüfen.
Dateispeicherort: https://yourdomain.com/.well-known/assetlinks.json
Konfigurationsanforderungen:
/.well-known/assetlinks.json auf Ihrer Domainapplication/jsonBeispiel assetlinks.json-Datei:
[ { "relation": [ "delegate_permission/common.handle_all_urls", "delegate_permission/common.get_login_creds" ], "target": { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": [ "AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99" ] } } ]
Validierung: Verwenden Sie den Digital Asset Links Generator von Google, um Ihre Konfiguration zu erstellen und zu überprüfen.
iOS-Apps benötigen die richtigen Entitlements, um auf die Passkey-Funktionalität zugreifen zu können. Die Anforderungen unterscheiden sich geringfügig je nach Ihrem Implementierungsansatz.
Die Entitlements-Datei (oft Runner.entitlements in
Flutter-Apps oder YourApp.entitlements in nativen
iOS-Projekten genannt) definiert spezielle Berechtigungen und Fähigkeiten, die vom
Apple-System gewährt werden. Für Passkeys konfiguriert diese Datei die Associated Domains.
Dateispeicherort: Typischerweise in Ihrem Xcode-Projekt unter
ios/Runner/Runner.entitlements
Die native Implementierung und die eingebettete WebView erfordern die Associated Domains-Funktion, um Ihre App mit Ihrer Web-Domain zu verknüpfen. Die System-WebView (ASWebAuthenticationSession) benötigt dies nicht, da sie im Safari-Kontext läuft.
Setup in Xcode:
webcredentials: hinzuBeispielkonfiguration:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:yourdomain.com</string> <string>webcredentials:subdomain.yourdomain.com</string> </array> </dict> </plist>
| Ansatz | Associated Domains erforderlich | Zusätzliche Konfiguration |
|---|---|---|
| Native Implementierung | Ja | Dedizierte Implementierung |
| System-WebView | Nicht erforderlich | Standard-Web-Setup funktioniert |
| Eingebettete WebView | Ja | Erfordert AndroidX WebKit 1.12.1+ Konfiguration |
Mehrere Domains: Wenn Ihre App mit mehreren Domains arbeiten muss, benötigen Sie möglicherweise Related Origin Requests (ROR).
Android Embedded WebViews erhielten mit AndroidX WebKit 1.12 native WebAuthn-Unterstützung, was die Notwendigkeit von benutzerdefiniertem JavaScript-Bridge-Code überflüssig machte. System-WebView (Chrome Custom Tabs) erfordert keine Konfiguration – Anmeldeinformationen funktionieren automatisch.
Anforderungen:
Implementierung:
import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature // Prüfen, ob Web Authentication unterstützt wird if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) { // Web Authentication aktivieren WebSettingsCompat.setWebAuthenticationSupport( webView.settings, WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP ) // JavaScript aktivieren webView.settings.javaScriptEnabled = true }
Wichtige Punkte:
WebViewFeature.WEB_AUTHENTICATION zur Laufzeitmediation:"conditional" (Passkey-Autofill in
Eingabefeldern) funktioniert nicht in der eingebetteten WebViewVersionshinweise:
Vor AndroidX WebKit 1.12.0 gab es keine native WebAuthn-Unterstützung in der eingebetteten WebView. Teams mussten entweder:
Wenn Sie ältere Android-Versionen oder Geräte ohne aktualisierte WebView-APKs unterstützen müssen, finden Sie im Android's Credential Manager WebView Integration guide den Bridge-Code-Ansatz. Wir empfehlen jedoch dringend die Verwendung des nativen WebKit 1.12.1+-Ansatzes für moderne Apps.
Empfehlung: Verwenden Sie die native WebAuthn-Unterstützung mit AndroidX WebKit 1.12.1+. Falls zur Laufzeit nicht verfügbar, greifen Sie auf Chrome Custom Tabs zurück, die eine hervorragende Passkey-Unterstützung mit geteilten Anmeldeinformationen bieten.
Bei der Implementierung von Passkeys in nativen Apps müssen Sie ein Vertrauensverhältnis zwischen Ihrer App und Ihrer/Ihren Web-Domain(s) herstellen. Dieser Abschnitt behandelt den Umgang mit einzelnen Domains, mehreren verwandten Domains (ROR) und wie Sie überprüfen können, ob Ihre Well-Known-Zuordnungsdateien ordnungsgemäß konfiguriert sind.
Für Apps, die eine einzelne Domain verwenden (z. B. kayak.com), benötigen Sie:
webcredentials:kayak.comRelated Origins (ROR) ist eine
WebAuthn-Funktion, die es einem einzigen Satz von Passkeys ermöglicht, über mehrere
verwandte Domains hinweg zu funktionieren (z. B. kayak.com, kayak.de, kayak.co.uk).
ROR verwendet den
/.well-known/webauthn-Endpunkt auf jeder Seite, um verwandte Ursprünge zu definieren,
NICHT die AASA- oder assetlinks-Dateien.
Wichtige Punkte:
/.well-known/webauthn mit der Liste der verwandten UrsprüngeKonfigurationsbeispiel:
Wenn Ihre App mit kayak.com und kayak.de funktioniert, müssen beide Domains:
Bevor Sie live gehen, überprüfen Sie, ob Ihre Well-Known-Dateien ordnungsgemäß konfiguriert und zugänglich sind. Apple und Google bieten CDN-basierte Test-URLs zur Überprüfung der Dateiverfügbarkeit:
| Domain | Apple AASA-Verifizierung | Google Digital Asset Links-Verifizierung |
|---|---|---|
| kayak.com | Test AASA file Prüfen Sie, ob das Apple CDN Ihre Datei abrufen kann | Test assetlinks.json Überprüfen Sie, ob Google auf Ihre Asset-Links zugreifen kann |
| kayak.de | Test AASA file Prüfen Sie, ob das Apple CDN Ihre Datei abrufen kann | Test assetlinks.json Überprüfen Sie, ob Google auf Ihre Asset-Links zugreifen kann |
Verwendung dieser Test-URLs:
?nocache=1-Parameter von Apple erzwingt einen frischen Abruf und umgeht den
CDN-Cachekayak.com oder kayak.de in den obigen URL-Mustern durch Ihre eigene(n)
Domain(s)Test-Fallstrick: Stellen Sie sicher, dass alle Domains ordnungsgemäß konfigurierte Well-Known-Dateien haben. Eine fehlende oder falsch konfigurierte Datei auf einer beliebigen Domain kann die Passkey-Funktionalität für diese Domain unterbrechen.
Weitere Informationen: WebAuthn Relying Party ID in nativen Apps
Die Wahl des richtigen Implementierungsansatzes hängt von der Authentifizierungsarchitektur Ihrer App, den OAuth-Anforderungen und dem Bedarf an Sitzungskontrolle ab. Verwenden Sie diesen Entscheidungsbaum, um den besten Weg nach vorne zu bestimmen.
Beginnen Sie mit diesen Schlüsselfragen:
Verwendet Ihre App OAuth-basiertes Login (OAuth2, OIDC, Social-Login-Anbieter)?
ASWebAuthenticationSessionMöchten Sie die Web-Authentifizierung in einer nativ anmutenden Hülle wiederverwenden (keine URL-Leiste, volle UI-Kontrolle)?
WKWebView + Associated Domains-EntitlementsWebView + AndroidX WebKit 1.12.1+-KonfigurationErstellen Sie eine neue native App oder haben Sie native Anmeldebildschirme?
Haben Sie eine bestehende Web-Authentifizierung, die Sie wiederverwenden möchten?
So schneiden die einzelnen Ansätze in den Schlüsseldimensionen ab:
| Ansatz | Passkeys erstellen | Passkeys verwenden | Passkeys verwalten | Technische Komplexität | OAuth-Unterstützung | Einrichtungszeit |
|---|---|---|---|---|---|---|
| Native Implementierung | Hohe Akzeptanz Nahtlose Biometrie, beste UX | Sofort, stillpreferImmediatelyAvailableCredentials ermöglicht automatisches Overlay beim App-Start | Volle native Kontrolle Integration in App-Einstellungen | Mittel-Hoch Plattformspezifische APIs | Erfordert separate OAuth-Flow-Implementierung | Wochen bis Monate |
| System-WebView | Gute Akzeptanz Browser-ähnliche Erfahrung, vertraut | Standard-Browser-UX Conditional UI in Eingabefeldern, geteilter Schlüsselbund | Browser-basiert Benutzer verwalten über den Browser | Gering Minimaler nativer Code | Ausgezeichnet Speziell für OAuth entwickelt | Tage bis Wochen |
| Eingebettete WebView | Geringere Akzeptanz Erfordert Konfiguration | Native WebAuthn-Unterstützung WebKit 1.12.1+, keine Conditional UI | Begrenzte Kontrolle Keine native Integration | Mittel-Hoch WebView-Konfiguration + Berechtigungen | Erfordert Konfiguration | 1-2 Wochen |
Erläuterung der Dimensionen:
Empfohlen: System-WebView
Wenn Ihre App über OAuth2, OIDC oder Social-Login-Anbieter (Google, GitHub, Microsoft usw.) authentifiziert, ist die System-WebView die optimale Wahl:
ASWebAuthenticationSession ist speziell für OAuth-Flows entwickeltBeispiel: Reise-Apps wie kayak.com und kayak.de verwenden OAuth zur Authentifizierung. Die System-WebView ermöglicht es ihnen, ihre bestehende OAuth-Infrastruktur beizubehalten und gleichzeitig Passkey-Unterstützung über ihre Web-Authentifizierungsseiten hinzuzufügen.
Empfohlen: Hybrider Ansatz
Verwenden Sie die System-WebView für die anfängliche OAuth-Authentifizierung und dann die eingebettete WebView für Sitzungen nach der Authentifizierung:
Wann zu verwenden: Apps, die über OAuth authentifizieren, aber dann authentifizierte Webinhalte anzeigen müssen, bei denen eine direkte Sitzungsmanipulation erforderlich ist.
Empfohlen: Native Implementierung
Entwickeln Sie von Grund auf neu oder haben Sie native Bildschirme? Gehen Sie vollständig nativ vor:
preferImmediatelyAvailableCredentials, um ein
automatisches Passkey-Overlay beim App-Start anzuzeigen
– exklusiv für native Implementierungen und bietet die höchsten KonversionsratenFür neue Apps: Es wird dringend empfohlen, von Anfang an ein natives Login zu erstellen. Dies bereitet Sie auf eine optimale UX vor und vermeidet zukünftige Migrationen von WebView zu nativ.
Empfohlen: Phasengenaue Migration
Dieser phasenweise Ansatz ermöglicht schrittweise Verbesserungen, ohne bestehende Benutzer zu stören.
| Anforderung | Nativ | System-WebView | Eingebettete WebView |
|---|---|---|---|
| Well-known-Dateien (AASA/assetlinks) | Erforderlich | Nicht erforderlich | Erforderlich |
| iOS Associated Domains | Erforderlich | Nicht erforderlich | Erforderlich |
| Android WebKit-Bibliothek | Nicht anwendbar | Nicht erforderlich | Erforderlich (1.12.1+) |
| Relying Party ID | Muss mit Domain übereinstimmen | Muss mit Domain übereinstimmen | Muss mit Domain übereinstimmen |
Siehe Abschnitt 5 für detaillierte Konfigurationsanweisungen.
Das Testen von Passkeys in nativen Apps erfordert einen strukturierten, mehrschichtigen Ansatz. Folgen Sie der Testpyramide: Unit-Tests (isolierte Logik), Integrationstests (WebAuthn-Zeremonie auf Simulatoren/Emulatoren) und Systemtests (End-to-End auf physischen Geräten).
Wesentliche Testkategorien:
Für eine umfassende Testanleitung einschließlich Automatisierungsstrategien, plattformspezifischen Fallstricken und einer vollständigen Checkliste vor dem Start, siehe unseren dedizierten Leitfaden: Testen von Passkey-Flows in nativen iOS- und Android-Apps.
Erwägen Sie, Benutzer aufzufordern, Passkeys zu erstellen, nachdem eine erfolgreiche traditionelle Anmeldung (Passwort, OAuth) erfolgt ist. Dieser schrittweise Konvertierungsansatz:
Beispiel: Nach dem OAuth-Login über die System-WebView eine native Aufforderung anzeigen: „Schnellere Anmeldung mit Face ID aktivieren?“ Bei Zustimmung wird ein Passkey über die in der System-WebView geladene Webseite erstellt.
Die Entscheidung, wie Passkeys implementiert werden – ob über native Implementierung, System-WebView oder eingebettete WebView – ist eine entscheidende Designentscheidung, die Sicherheit, Benutzererfahrung und Entwicklungskomplexität beeinflusst. Es gibt keine Einheitslösung.
Für OAuth-basierte Apps: System-WebView (ASWebAuthenticationSession, Chrome Custom Tabs) ist der empfohlene Ausgangspunkt. Sie bietet exzellente OAuth-Unterstützung, minimalen Implementierungsaufwand und automatische Freigabe von Anmeldeinformationen.
Für native Apps: Gehen Sie lieber früher als später nativ vor. Ein nativer
Passkey-Login bietet die nahtloseste UX mit exklusiven Funktionen wie
preferImmediatelyAvailableCredentials, das ein
automatisches Passkey-Overlay beim App-Start
ermöglicht – etwas, das WebView-Implementierungen nicht bieten können. Da iOS und Android
nun erstklassige Unterstützung für Passkeys bieten, zeigen Erfolge in der Praxis eine hohe
Akzeptanz. Die Werkzeuge (einschließlich Open-Source-SDKs und Plattformbibliotheken) sind
so weit gereift, dass eine native Integration in einem angemessenen Zeitrahmen machbar
ist. Obwohl man auf Gerätemanagement-Richtlinien, geräteübergreifende Synchronisierung und
Drittanbieter achten muss, können diese Herausforderungen mit sorgfältiger Entwicklung und
Tests bewältigt werden. Das Ergebnis ist ein App-Login, der die Benutzer mit seiner
Einfachheit und Geschwindigkeit begeistert und gleichzeitig die Sicherheit erheblich
verbessert.
Für Anforderungen an eingebettete WebView-Frames: Die eingebettete WebView wird in zwei realen Szenarien häufig verwendet. Erstens verwenden OAuth-basierte Apps oft die System-WebView für den anfänglichen Anmeldeablauf und wechseln dann zur eingebetteten WebView, um Passkey-Verwaltungsoptionen in Einstellungsbildschirmen darzustellen, wo eine Sitzungskontrolle erforderlich ist – obwohl einige Apps dies vereinfachen, indem sie die System-WebView für beide Abläufe beibehalten. Zweitens setzen Apps, die ihren Authentifizierungsablauf bereits vor der Einführung von Passkeys in WebView-Frames eingebettet hatten, dieses Muster aus Konsistenzgründen fort. Die eingebettete WebView mit nativer WebAuthn-Unterstützung (AndroidX WebKit 1.12.1+) erfordert Konfiguration und Einrichtung (Berechtigungen, Entitlements, WebView-Einstellungen), benötigt aber keinen benutzerdefinierten JavaScript-Bridge-Code mehr. Beachten Sie, dass Conditional UI in der eingebetteten WebView nicht unterstützt wird. Wählen Sie diesen Ansatz, wenn Sie bestehende eingebettete Authentifizierungsmuster beibehalten oder wenn Sie eine Sitzungs-/Cookie-Kontrolle für Bildschirme nach der Authentifizierung benötigen.
Letztendlich stellen Passkeys in nativen Apps einen gewaltigen Fortschritt in Bezug auf Benutzerfreundlichkeit und Sicherheit dar. Ob über Native, System-WebView oder Embedded WebView implementiert, sie eliminieren Phishing-Risiken und die Last der Passwortverwaltung für Ihre Benutzer. Praxisbeispiele wie die native App-Passkey-Integration von VicRoads zeigen, dass native Ansätze die höchste Benutzerakzeptanz und -zufriedenheit liefern, wenn sie ordnungsgemäß mit Funktionen wie automatischen Passkey-Overlays umgesetzt werden. Indem Sie Best Practices für eine benutzerfreundliche Authentifizierung befolgen und den Implementierungsansatz wählen, der zur Architektur Ihrer App passt – nativ für neue Apps, System-WebView für OAuth-Flows oder Embedded WebView für bestehende eingebettete Muster – können Sie passwortlose, biometrische Anmeldungen anbieten, die die Vision von Passkeys wirklich verwirklichen: einfache, sichere und begeisternde Authentifizierung für alle.
Wenn Passkeys in Ihrer nativen App nicht funktionieren, überprüfen Sie diese häufigen Probleme je nach Implementierungsansatz:
application/json.well-known-Pfadhttps://your-domain.com (nicht app://)webcredentials:yourdomain.com
aktiviertASWebAuthenticationSession (empfohlen) oder
SFSafariViewController?mode=developer während der Entwicklung (für die Produktion
entfernen)WebViewFeature.WEB_AUTHENTICATIONsetWebAuthenticationSupport() mit WEB_AUTHENTICATION_SUPPORT_FOR_APP
aufgerufen"NotAllowedError: The request is not allowed by the user agent or the platform in the current context"
setWebAuthenticationSupport()-AufrufKeine Passkey-Aufforderung erscheint
?mode=developer auf iOS zum Testen
verwenden, WebView-Typ überprüfenFür eine detaillierte Fehlersuche, siehe unseren Artikel über Relying Party IDs in nativen Apps.
Corbado Native SDKs:
Plattform-Dokumentation:
Validierungs-Tools:
Passkeys Series: Native Apps
Related Articles
Passkey Tutorial: How to Implement Passkeys in Web Apps
Vincent - December 7, 2023
The High-Level Architecture of an Integrated Passkey Flow
Janina - December 21, 2022
Table of Contents