A API FIDO2 permite que apps Android criem e usem credenciais baseadas em chave pública fortes e comprovadas para autenticar usuários. A API fornece uma implementação de cliente WebAuthn, que oferece suporte ao uso de autenticadores de roaming BLE, NFC e USB (chaves de segurança), além de um autenticador de plataforma, que permite que o usuário faça a autenticação usando a impressão digital ou o bloqueio de tela.
Integração
O ponto de entrada da API FIDO2 é o Fido2ApiClient.
A API é compatível com duas operações:
- O registro é feito uma vez por autenticador por conta, quando o usuário associa um autenticador a uma conta.
- A assinatura é feita sempre que a parte confiável quer autenticar um usuário.
Tanto o registro quanto a assinatura exigem interação do usuário.
Um aplicativo de exemplo que demonstra o uso da API pode ser encontrado em https://github.com/android/identity-samples/tree/main/Fido2.
Interoperabilidade com seu site
É simples permitir que os usuários compartilhem credenciais entre si no seu site e no app Android. Para fazer isso, use o Digital Asset Links. Para declarar associações, é possível hospedar um arquivo JSON do Digital Asset Links no seu site e adicionar um link para o arquivo do Digital Asset Link ao manifesto do app.
Por exemplo, se você quiser associar https://example.com
a um app Android
com.example.android
, siga estas três etapas necessárias:
Etapa 1. Hospedar assetlinks.json
no seu domínio
Crie um arquivo JSON como este e hospede-o em https://example.com/.well-known/assetlinks.json
.
[
{
"relation" : [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target" : {
"namespace" : "web",
"site" : "https://example.com"
}
},
{
"relation" : [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target" : {
"namespace" : "android_app",
"package_name" : "com.example.android",
"sha256_cert_fingerprints" : [
"DE:AD:BE:EF"
]
}
}
]
Verifique se ele é rastreável pelo Google e exibido com o cabeçalho HTTP
Content-Type: application/json
.
sha256_cert_fingerprints
são as impressões digitais SHA256 do certificado de assinatura do app.
Encontre mais detalhes na documentação de Links do app Android.
Etapa 2: Vincular a assetlinks.json
no app Android
No app Android, adicione a seguinte linha ao arquivo de manifesto em <application>
:
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
Etapa 3. Adicione um recurso de string asset_statements
ao arquivo strings.xml.
A string asset_statements
é um objeto JSON que especifica os arquivos assetlinks.json
a serem carregados. É necessário fazer o escape de todos os apóstrofos e aspas que você usa
na string. Exemplo:
<string name="asset_statements" translatable="false">
[{
\"include\": \"https://example.com/.well-known/assetlinks.json\"
}]
</string>
Para saber mais sobre como associar o app e o site, leia a documentação SmartLock para senhas no Android.