A API FIDO2 permite que os aplicativos Android criem e usem credenciais fortes e atestadas com base em chaves públicas para fins de autenticação de usuários. A API oferece uma implementação de cliente WebAuthn (link em inglês), que aceita o uso de autenticadores de roaming BLE, NFC e USB (chaves de segurança), bem como 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 quiser autenticar um usuário.
Tanto o registro quanto a assinatura exigem interação do usuário.
Um aplicativo de amostra que demonstra o uso da API pode ser encontrado em https://github.com/android/identity-samples/tree/main/Fido2 (link em inglês).
Interoperabilidade com seu site
É simples permitir que os usuários compartilhem facilmente credenciais entre seu site e app Android. Para fazer isso, use os Digital Asset Links. Você pode declarar associações hospedando um arquivo JSON do Digital Asset Links no seu site e adicionando um link ao 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:
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
é as impressões digitais SHA256 do certificado de assinatura do app.
Veja mais detalhes na documentação dos Links do app Android.
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. Adicionar 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. Você precisa executar o escape de apóstrofos e aspas 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.