Autenticar usuários com a WebView

Este documento descreve como integrar o Gerenciador de credenciais a um app Android que usa a WebView. O Gerenciador de credenciais tem suporte nativo na biblioteca android.webkit.WebView na versão 1.12.0 e mais recentes.

Pré-requisitos

Para usar o Gerenciador de credenciais na WebView, adicione as seguintes dependências ao script de build do módulo do app:

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

Também é necessário associar o app a um site de sua propriedade usando o link de recursos digitais. Para mais informações, consulte Como adicionar a vinculação de recursos digitais.

Usar a biblioteca WebKit

Para usar a biblioteca WebKit, verifique o suporte a recursos e ative-o chamando 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.")
                        }
                    }
                },
            )
        }
    }
}

Integração com a Web

Para aprender a criar integração com a Web, consulte Criar uma chave de acesso para logins sem senha. Você também pode consultar a fonte do site de demonstração.

Teste e implantação

Teste todo o fluxo em um ambiente controlado para verificar a comunicação adequada entre o app Android, a página da Web e o back-end.

Implante a solução integrada na produção, verificando se o back-end pode processar as solicitações de registro e autenticação. O código de back-end precisa gerar o arquivo JSON inicial para os processos de registro (criação) e autenticação (recebimento). Ele também precisa processar a validação e verificação das respostas recebidas da página da Web.

Verifique se a implementação corresponde às recomendações de UX.