احراز هویت کاربران با WebView

این سند نحوه ادغام API مدیریت اعتبار (Credential Manager) را با یک برنامه اندروید که از WebView استفاده می‌کند، شرح می‌دهد. مدیریت اعتبار (Credential Manager) به صورت بومی در کتابخانه android.webkit.WebView در نسخه 1.12.0 و بالاتر پشتیبانی می‌شود.

پیش‌نیازها

برای استفاده از Credential Manager در WebView، وابستگی‌های زیر را به اسکریپت ساخت ماژول برنامه خود اضافه کنید:

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

همچنین باید برنامه خود را با استفاده از پیوند دارایی دیجیتال به وب‌سایتی که متعلق به برنامه شماست، مرتبط کنید. برای اطلاعات بیشتر، به افزودن پیوند دارایی دیجیتال مراجعه کنید.

استفاده از کتابخانه WebKit

برای استفاده از کتابخانه WebKit، پشتیبانی از ویژگی‌ها را بررسی کنید و سپس با فراخوانی 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.")
                        }
                    }
                },
            )
        }
    }
}

یکپارچه‌سازی وب

برای یادگیری نحوه‌ی ساخت یکپارچه‌سازی وب، به بخش «ایجاد کلید عبور برای ورودهای بدون رمز عبور» مراجعه کنید. همچنین می‌توانید به منبع سایت آزمایشی مراجعه کنید.

آزمایش و استقرار

کل جریان را به طور کامل در یک محیط کنترل‌شده آزمایش کنید تا ارتباط مناسب بین برنامه اندروید، صفحه وب و backend تأیید شود.

راهکار یکپارچه را در محیط عملیاتی مستقر کنید و تأیید کنید که backend می‌تواند درخواست‌های ثبت‌نام و احراز هویت ورودی را مدیریت کند. کد backend باید JSON اولیه را برای فرآیندهای ثبت‌نام (ایجاد) و احراز هویت (دریافت) تولید کند. همچنین باید اعتبارسنجی و تأیید پاسخ‌های دریافتی از صفحه وب را نیز مدیریت کند.

تأیید کنید که پیاده‌سازی با توصیه‌های UX مطابقت دارد.