API de FIDO2 para Android

La API de FIDO2 permite que las aplicaciones para Android creen y usen credenciales seguras y públicas basadas en claves públicas con el fin de autenticar usuarios. La API proporciona una implementación de Cliente WebAuthn que admite el uso de autenticadores de roaming USB (NFC, NFC y BLE), así como un autenticador de plataforma, que permite al usuario autenticarse con su huella digital o bloqueo de pantalla.

Integración

El punto de entrada de la API de FIDO2 es el Fido2ApiClient.

La API admite dos operaciones:

  • El registro se realiza una vez por autenticador y por cuenta, cuando el usuario asocia un autenticador con una cuenta.
  • La firma se realiza cada vez que el usuario de confianza quiere autenticar a un usuario.

Tanto el registro como la firma requieren la interacción del usuario.

Puedes encontrar una aplicación de ejemplo que demuestra el uso de la API en https://github.com/android/identity-samples/tree/main/Fido2.

Interoperabilidad con su sitio web

Es sencillo permitir que los usuarios compartan credenciales sin inconvenientes en tu sitio web y tu aplicación para Android. Para ello, usa los vínculos de recursos digitales. Para declarar asociaciones, puedes alojar un archivo JSON de Vínculos de recursos digitales en tu sitio web y agregar un vínculo al archivo correspondiente en el manifiesto de tu app.

Por ejemplo, si quieres asociar https://example.com con una app para Android, com.example.android debes seguir estos 3 pasos obligatorios:

Paso 1: Aloje assetlinks.json en su dominio

Crea un archivo JSON como este y alójalo en 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"
      ]
    }
  }
]

Asegúrate de que se pueda rastrear desde Google y que se entregue con el encabezado HTTP Content-Type: application/json.

sha256_cert_fingerprints es la huella digital SHA256 del certificado de firma de tu app. Obtén más detalles en la documentación sobre Android App Links.

En tu app para Android, agrega la siguiente línea al archivo de manifiesto en <application>:

<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />

Paso 3: Agrega un recurso de strings asset_statements al archivo strings.xml.

La string asset_statements es un objeto JSON que especifica los archivos assetlinks.json que se cargarán. Debes escapar cualquier apóstrofo y comillas que uses en la string. Por ejemplo:

<string name="asset_statements" translatable="false">
[{
  \"include\": \"https://example.com/.well-known/assetlinks.json\"
}]
</string>

Para obtener más información sobre cómo asociar tu app y tu sitio web, lee la documentación sobre SmartLock para contraseñas en Android.