API de FIDO2 para Android

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

La API de FIDO2 permite que las aplicaciones de Android creen y usen credenciales públicas basadas en claves sólidas y certificadas con el fin de autenticar usuarios. La API proporciona una implementación de Cliente de WebAuthn, que admite el uso de autenticadores de roaming USB, BLE y NFC (llaves de seguridad), 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 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/security-samples/tree/master/Fido.

Interoperabilidad con su sitio web

Es simple permitir que los usuarios compartan credenciales sin problemas en tu sitio web y aplicación para Android. Para ello, aprovecha los vínculos de recursos digitales. Puedes declarar asociaciones si alojas un archivo JSON de Vínculos de recursos digitales en tu sitio web y agregas un vínculo al archivo de Vínculos de recursos digitales al 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 de que se entregue 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 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 sitio web, lee la documentación de SmartLock para contraseñas en Android.