Xác thực người dùng bằng WebView

Tài liệu này mô tả cách tích hợp API Trình quản lý thông tin xác thực với một ứng dụng Android sử dụng WebView. Trình quản lý thông tin xác thực được hỗ trợ nguyên bản trong thư viện android.webkit.WebViewphiên bản 1.12.0 trở lên.

Điều kiện tiên quyết

Để sử dụng Trình quản lý thông tin xác thực trong WebView, hãy thêm các phần phụ thuộc sau vào tập lệnh bản dựng của mô-đun ứng dụng:

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

Bạn cũng cần liên kết ứng dụng của mình với một trang web mà ứng dụng đó sở hữu bằng cách sử dụng tính năng liên kết tài sản kỹ thuật số. Để biết thêm thông tin, hãy xem phần thêm tính năng liên kết tài sản kỹ thuật số.

Sử dụng thư viện WebKit

Để sử dụng thư viện WebKit, hãy kiểm tra xem tính năng có được hỗ trợ hay không, sau đó bật tính năng hỗ trợ bằng cách gọi 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.")
                        }
                    }
                },
            )
        }
    }
}

Tích hợp web

Để tìm hiểu cách tạo quy trình tích hợp web, hãy xem bài viết Tạo khoá truy cập cho hoạt động đăng nhập không cần mật khẩu. Bạn cũng có thể tham khảo nguồn trang web minh hoạ.

Kiểm thử và triển khai

Kiểm thử kỹ toàn bộ quy trình trong một môi trường được kiểm soát để xác minh hoạt động giao tiếp đúng cách giữa ứng dụng Android, trang web và phần phụ trợ.

Triển khai giải pháp tích hợp vào giai đoạn sản xuất, xác minh rằng phần phụ trợ có thể xử lý các yêu cầu đăng ký và xác thực sắp tới. Mã phụ trợ phải tạo JSON ban đầu cho các quy trình đăng ký (tạo) và xác thực (nhận). Thao tác này cũng sẽ xử lý việc xác thực và xác minh các phản hồi nhận được từ trang web.

Xác minh rằng phương thức triển khai này phù hợp với các đề xuất về trải nghiệm người dùng.