Por que precisamos do SHA-256 do certificado do cliente para Passkey funcionar?

O Passkey no Android utiliza o protocolo Digital Asset Links para estabelecer uma associação verificável e segura entre o aplicativo nativo do cliente e o domínio web da Unico. Esta vinculação é obrigatória por design do sistema operacional Android para autenticação com passkeys em aplicações móveis Google.

Como funciona a verificação de segurança

Antes de gerar um par de chaves para passkey, o autenticador Android verifica o Relying Party ID (RP ID) presente na resposta do servidor contra o nome de domínio especificado no arquivo Digital Asset Links. Sem essa verificação bem-sucedida, o Passkey simplesmente não funciona.

O que é o SHA-256 e por que é necessário

Estrutura do arquivo assetlinks.json

O arquivo deve incluir duas permissões específicas: delegate_permission/common.handle_all_urls (para Android App Links) e delegate_permission/common.get_login_creds (para compartilhamento de credenciais entre website e app Android), juntamente com o package name e o SHA-256 fingerprint do cliente.

Por que solicitamos essa informação?

  1. Dados diferentes para debug vs. production: Os fingerprints associados às chaves de assinatura e upload são diferentes. É importante ter essa distinção clara, especialmente considerando que apps podem ter múltiplas versões (debug, release, diferentes product flavors)

  2. Bloqueio total: O servidor precisa conhecer o app do cliente em dois lugares diferentes: no arquivo publicamente disponível (assetlinks.json) e na configuração do servidor (expected origin). Sem o SHA-256 correto, nenhuma operação de passkey funcionará

Como obter o SHA-256

É possível extrair o SHA-256 fingerprint usando a ferramenta keytool do Java Development Kit (JDK) ou encontrá-lo diretamente no Google Play Console na seção "App Signing" sob "Setup > App integrity".

Conclusão

O SHA-256 não é apenas um requisito técnico — é um mecanismo fundamental de segurança do Android para garantir que apenas o aplicativo legítimo do cliente possa criar e utilizar passkeys associados ao domínio da Unico. Sem ele, não há como estabelecer a confiança necessária entre o app e o servidor, tornando impossível ativar a funcionalidade de Passkey para aquele cliente.

Conteúdo relacionado

Atualizado

Isto foi útil?