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.
Paso 2: Vincular a assetlinks.json
en la app para Android
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.