אימות משתמשים באמצעות WebView

במסמך הזה מוסבר איך לשלב את Credential Manager API באפליקציית Android שמשתמשת ב-WebView. התמיכה ב-Credential Manager מובנית בספרייה android.webkit.WebView בגרסה 1.12.0 ואילך.

דרישות מוקדמות

כדי להשתמש במנהל פרטי הכניסה ב-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.")
                        }
                    }
                },
            )
        }
    }
}

שילוב באינטרנט

במאמר יצירת מפתח גישה לכניסה ללא סיסמה מוסבר איך ליצור שילוב עם אתרים. אפשר גם לעיין במקור של אתר הדמו.

בדיקה ופריסה

חשוב לבדוק את כל התהליך בסביבה מבוקרת כדי לוודא שיש תקשורת תקינה בין אפליקציית Android, דף האינטרנט והקצה העורפי.

מבצעים פריסה של הפתרון המשולב בסביבת הייצור, ומוודאים שהקצה העורפי יכול לטפל בבקשות נכנסות של הרשמה ואימות. קוד ה-Backend צריך ליצור JSON ראשוני לתהליכי הרשמה (יצירה) ואימות (קבלת נתונים). הוא צריך גם לטפל באימות של התשובות שמתקבלות מדף האינטרנט.

מוודאים שההטמעה תואמת להמלצות בנושא חוויית משתמש.