API FIDO2 para Android

La API FIDO2 permite que las aplicaciones de Android creen y utilicen credenciales sólidas basadas en claves públicas certificadas con el fin de autenticar a los usuarios. La API proporciona una implementación del Cliente WebAuthn , que admite el uso de autenticadores de itinerancia BLE, NFC y USB (claves de seguridad), así como un autenticador de plataforma, que permite al usuario autenticarse mediante su huella digital 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 por cuenta, cuando el usuario asocia un autenticador con una cuenta.
  • La firma se realiza siempre que la parte que confía desea autenticar a un usuario.

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

Puede encontrar una aplicación de muestra que demuestra el uso de API en https://github.com/android/security-samples/tree/master/Fido .

Interoperabilidad con su sitio web

Es simple permitir a los usuarios compartir credenciales sin problemas en su sitio web y aplicación de Android. Para hacerlo, aproveche los enlaces de activos digitales . Puede declarar asociaciones alojando un archivo JSON de enlaces de activos digitales en su sitio web y agregando un enlace al archivo de enlace de activos digitales al manifiesto de su aplicación.

Por ejemplo, si desea asociar https://example.com con una aplicación de Android com.example.android , aquí hay 3 pasos obligatorios:

Paso 1. assetlinks.json en su dominio

Cree un archivo JSON como este y alójelo 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úrese de que se pueda rastrear desde Google y que se entregue con el encabezado HTTP Content-Type: application/json .

En su aplicación de Android, agregue la siguiente línea al archivo de manifiesto en <application> :

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

Paso 3. Agregue un asset_statements cadena asset_statements al archivo strings.xml

La cadena asset_statements es un objeto JSON que especifica los archivos assetlinks.json que se cargarán. Debe evitar los apóstrofos y las comillas que utilice en la cadena. 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 su aplicación y su sitio web, lea la documentación de SmartLock para contraseñas en Android .