Mengautentikasi pengguna dengan WebView

Dokumen ini menjelaskan cara mengintegrasikan Credential Manager API dengan aplikasi Android yang menggunakan WebView. Pengelola Kredensial didukung secara native di library android.webkit.WebView dalam versi 1.12.0 dan yang lebih baru.

Prasyarat

Untuk menggunakan Pengelola Kredensial di WebView, tambahkan dependensi berikut ke skrip build modul aplikasi Anda:

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

Anda juga harus mengaitkan aplikasi dengan situs yang dimiliki aplikasi menggunakan penautan aset digital. Untuk mengetahui informasi selengkapnya, lihat menambahkan penautan aset digital.

Menggunakan library WebKit

Untuk menggunakan library WebKit, periksa dukungan fitur, lalu aktifkan dukungan dengan memanggil 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.")
                        }
                    }
                },
            )
        }
    }
}

Integrasi Web

Untuk mempelajari cara membangun integrasi Web, lihat Membuat kunci sandi untuk login tanpa sandi. Anda juga dapat melihat sumber situs demo.

Pengujian dan deployment

Uji seluruh alur secara menyeluruh dalam lingkungan terkendali untuk memverifikasi komunikasi yang tepat antara aplikasi Android, halaman web, dan backend.

Deploy solusi terintegrasi ke produksi, dengan memverifikasi bahwa backend dapat menangani permintaan pendaftaran dan autentikasi yang masuk. Kode backend harus membuat JSON awal untuk proses pendaftaran (membuat) dan autentikasi (mendapatkan). Aplikasi ini juga harus menangani validasi dan verifikasi respons yang diterima dari halaman web.

Pastikan bahwa penerapan sesuai dengan rekomendasi UX.