A API FIDO2 permite que os aplicativos Android criem e usem credenciais fortes com base em chave pública para autenticar usuários. A API oferece 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 oferece suporte a 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 quiser autenticar um usuário.
Tanto o registro quanto a assinatura exigem interação do usuário.
Confira um exemplo de aplicativo demonstrando o uso da API em https://github.com/android/identity-samples/tree/main/Fido2.
Interoperabilidade com seu site
É simples permitir que os usuários compartilhem credenciais entre seu site e o aplicativo Android. Para fazer isso, use os Digital Asset Links. É possível declarar associações hospedando um arquivo JSON de links de ativos digitais no site e adicionando um link ao arquivo de links de ativos digitais ao manifesto do app.
Por exemplo, se você quiser associar https://example.com
a um app Android
com.example.android
, veja 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 o site pode ser rastreado pelo Google e se ele é veiculado 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.
Confira mais detalhes na documentação do Android App Links.
Etapa 2. Link para 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 do SmartLock para senhas no Android.