API FIDO2 para Android

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A API FIDO2 permite que aplicativos Android criem e usem credenciais fortes e testadas com base em chaves públicas para fins de autenticação de usuários. A API fornece uma implementação do WebAuthn Client, que oferece suporte ao uso de autenticadores de roaming BLE, NFC e USB (chaves de segurança), bem como um autenticador de plataforma, que permite o usuário se autenticar 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 quer autenticar um usuário.

O registro e a assinatura exigem a interação do usuário.

Um exemplo de aplicativo que demonstra o uso da API pode ser encontrado em https://github.com/android/security-samples/tree/master/Fido (em inglês).

Interoperabilidade com seu site

É fácil permitir que os usuários compartilhem credenciais de forma simples no seu site e aplicativo para Android. Para fazer isso, use os links de recursos digitais. Você pode declarar associações hospedando um arquivo JSON do Digital Asset Links no seu site e adicionando um link ao arquivo Digital Asset Link ao manifesto do seu app.

Por exemplo, se quiser associar https://example.com a um app Android com.example.android, veja as três etapas necessárias abaixo:

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. Veja mais detalhes na documentação de links de apps 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 escapar dos apóstrofos e aspas usados 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.