Uwierzytelnianie użytkowników za pomocą WebView

W tym dokumencie opisujemy, jak zintegrować interfejs Credential Manager API z aplikacją na Androida, która korzysta z komponentu WebView. Menedżer danych logowania jest natywnie obsługiwany w bibliotece android.webkit.WebViewwersji 1.12.0 i nowszych.

Wymagania wstępne

Aby używać Menedżera danych logowania w komponencie WebView, dodaj te zależności do skryptu kompilacji modułu aplikacji:

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")
}

Musisz też powiązać aplikację z witryną, której jesteś właścicielem, za pomocą linkowania zasobów cyfrowych. Więcej informacji znajdziesz w artykule na temat dodawania linków do zasobów cyfrowych.

Korzystanie z biblioteki WebKit

Aby użyć biblioteki WebKit, sprawdź obsługę funkcji, a następnie włącz ją, wywołując funkcję 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.")
                        }
                    }
                },
            )
        }
    }
}

Integracja z witryną

Aby dowiedzieć się, jak utworzyć integrację z internetem, przeczytaj artykuł Tworzenie klucza dostępu do logowania bez hasła. Możesz też zapoznać się z kodem źródłowym witryny demonstracyjnej.

Testowanie i wdrażanie

Dokładnie przetestuj cały proces w kontrolowanym środowisku, aby sprawdzić prawidłową komunikację między aplikacją na Androida, stroną internetową i backendem.

Wdróż zintegrowane rozwiązanie w środowisku produkcyjnym, sprawdzając, czy backend może obsługiwać przychodzące żądania rejestracji i uwierzytelniania. Kod backendu powinien generować początkowy plik JSON na potrzeby rejestracji (tworzenia) i uwierzytelniania (pobierania). Powinien on również obsługiwać sprawdzanie i weryfikację odpowiedzi otrzymanych ze strony internetowej.

Sprawdź, czy implementacja jest zgodna z zaleceniami dotyczącymi UX.