API de FIDO2 para Android

La API de FIDO2 permite que las aplicaciones para Android creen y usen credenciales basadas en claves públicas sólidas y certificadas con el fin de autenticar a los usuarios. La API proporciona una implementación del cliente de WebAuthn, que admite el uso de autenticadores móviles de BLE, NFC y USB (llaves de seguridad), así como con un autenticador de plataforma, que le permite al usuario autenticarse con su huella dactilar o bloqueo de pantalla.

Integración

El punto de entrada de la API de FIDO2 es 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 desea 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 fácil permitir que los usuarios compartan credenciales sin problemas en tu sitio web y aplicación para Android. Para hacerlo, aprovecha los Vínculos de recursos digitales. Para declarar asociaciones, debes alojar un archivo JSON de Vínculos de recursos digitales en tu sitio web y agregar un vínculo al archivo de Vínculos de recursos digitales en el manifiesto de tu app.

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

Paso 1. Aloja assetlinks.json en tu 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 publique con el encabezado HTTP Content-Type: application/json.

sha256_cert_fingerprints son las huellas digitales SHA256 del certificado de firma de tu app. Obtén más detalles en la documentación de 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 cadenas asset_statements al archivo strings.xml.

La cadena 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 cadena. Por ejemplo:

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

Si deseas obtener más información para asociar tu app y tu sitio web, lee la documentación de SmartLock para contraseñas en Android.