WebView로 사용자 인증

이 문서에서는 Credential Manager API를 WebView를 사용하는 Android 앱과 통합하는 방법을 설명합니다. 인증 관리자는 버전 1.12.0 이상의 android.webkit.WebView 라이브러리에서 기본적으로 지원됩니다.

기본 요건

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 앱과 웹페이지, 백엔드 간에 적절한 통신이 이루어지도록 하세요.

들어오는 등록 및 인증 요청을 백엔드에서 처리할 수 있는지 확인하여 통합 솔루션을 프로덕션에 배포합니다. 백엔드 코드는 등록(만들기) 및 인증(가져오기) 프로세스를 위해 초기 JSON을 생성해야 합니다. 또한 웹페이지에서 수신된 응답의 유효성 검사 및 확인을 처리해야 합니다.

구현이 UX 권장사항과 일치하는지 확인합니다.