Nutzer mit WebView authentifizieren

In diesem Dokument wird beschrieben, wie Sie die Credential Manager API in eine Android-App einbinden, die WebView verwendet. Credential Manager wird nativ in der android.webkit.WebView-Bibliothek ab Version 1.12.0 unterstützt.

Voraussetzungen

Wenn Sie Credential Manager in WebView verwenden möchten, fügen Sie dem Build-Skript Ihres App-Moduls die folgenden Abhängigkeiten hinzu:

dependencies {
  implementation("androidx.credentials:credentials:1.6.0-beta02")   
  implementation("androidx.credentials:credentials-play-services-auth:1.6.0-beta02")
  implementation("androidx.webkit:webkit:1.14.0")
}

Außerdem müssen Sie Ihre App mithilfe der Verknüpfung digitaler Assets mit einer Website verknüpfen, die Ihnen gehört. Weitere Informationen finden Sie unter Verknüpfung von digitalen Assets hinzufügen.

WebKit-Bibliothek verwenden

Wenn Sie die WebKit-Bibliothek verwenden möchten, prüfen Sie, ob die Funktion unterstützt wird, und aktivieren Sie die Unterstützung dann durch Aufrufen von setWebAuthenticationSupport():

class WebViewActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            val url = "https://passkeys-codelab.glitch.me/"
            AndroidView(
                factory = { context ->
                    WebView(context).apply {
                        settings.javaScriptEnabled = true

                        webViewClient = WebViewClientImpl()
                    }
                },
                update = { webView ->
                    run {
                        webView.loadUrl(url)
                        if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) {
                            WebSettingsCompat.setWebAuthenticationSupport(
                                webView.settings,
                                WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP,
                            )
                            // Check if getWebauthenticationSupport may have been disabled by the WebView.
                            Log.e(
                                "WebViewPasskeyDemo",
                                "getWebAuthenticationSupport result: " + WebSettingsCompat.getWebAuthenticationSupport(
                                    webView.settings
                                ),
                            )
                        } else {
                            Log.e("WebViewPasskeyDemo", "WebView does not support passkeys.")
                        }
                    }
                },
            )
        }
    }
}

Web integration

Informationen zum Erstellen einer Webintegration finden Sie unter Passkey für die Anmeldung ohne Passwort erstellen. Sie können sich auch den Quellcode der Demowebsite ansehen.

Testen und Bereitstellen

Testen Sie den gesamten Ablauf gründlich in einer kontrollierten Umgebung, um die ordnungsgemäße Kommunikation zwischen der Android-App, der Webseite und dem Backend zu überprüfen.

Stellen Sie die integrierte Lösung in der Produktion bereit und prüfen Sie, ob das Backend eingehende Registrierungs- und Authentifizierungsanfragen verarbeiten kann. Der Backend-Code sollte das erste JSON für die Registrierung (create) und die Authentifizierung (get) generieren. Außerdem sollten die von der Webseite empfangenen Antworten validiert und überprüft werden.

Prüfen Sie, ob die Implementierung den UX-Empfehlungen entspricht.