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

#### **Fundamento Técnico: Digital Asset Links (DAL)** <a href="#fundamento-tecnico-digital-asset-links-dal" id="fundamento-tecnico-digital-asset-links-dal"></a>

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](https://developers.google.com/identity/passkeys/developer-guides).

#### **Como funciona a verificação de segurança** <a href="#como-funciona-a-verificacao-de-seguranca" id="como-funciona-a-verificacao-de-seguranca"></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](https://blogs.halodoc.io/streamlining-logins-and-reducing-cost-passkey-integration-in-android-apps/). Sem essa verificação bem-sucedida, o Passkey simplesmente não funciona.

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

* O SHA-256 fingerprint é um hash único gerado a partir do certificado de assinatura do aplicativo, usado para identificar a [autenticidade e integridade do app](https://docs.loginid.io/reference-documentation/mobile/android/).
* Este certificado corresponde à chave usada para assinar o APK/AAB [antes da distribuição](https://docs.pingidentity.com/sdks/latest/sdks/use-cases/mobile-biometrics/android/01-prepare-assetlinks-json-file.html) na Google Play Store.
* É necessário [registrar este fingerprint](https://developer.android.com/identity/credential-manager/prerequisites) no arquivo assetlinks.json hospedado no domínio da Unico sob o path `/.well-known/assetlinks.json`

#### **Estrutura do arquivo assetlinks.json** <a href="#estrutura-do-arquivo-assetlinks.json" id="estrutura-do-arquivo-assetlinks.json"></a>

O arquivo deve incluir duas permissões específicas: `delegate_permission/common.handle_all_urls` (para [Android App Links](https://developer.android.com/identity/credential-manager/prerequisites)) 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?** <a href="#por-que-solicitar-formalmente-ao-cliente" id="por-que-solicitar-formalmente-ao-cliente"></a>

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](https://developer.android.com/studio/publish/app-signing) (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](https://www.droidcon.com/2025/05/19/implementing-passkeys-in-android-a-full-stack-guide/)). Sem o SHA-256 correto, **nenhuma operação de passkey funcionará**

#### **Como obter o SHA-256** <a href="#como-o-cliente-pode-obter-o-sha-256" id="como-o-cliente-pode-obter-o-sha-256"></a>

É possível [extrair o SHA-256 fingerprint](https://docs.pingidentity.com/sdks/latest/sdks/use-cases/mobile-biometrics/android/01-prepare-assetlinks-json-file.html) 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** <a href="#conclusao" id="conclusao"></a>

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

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://devcenter.unico.io/unico-idcloud/by-client-integration/pt/sdk/sdks-disponiveis/sdk-android/por-que-precisamos-do-sha-256-do-certificado-do-cliente-para-passkey-funcionar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
