La API de FIDO2 permite que las aplicaciones para Android creen y usen credenciales públicas certificadas y sólidas basadas en claves con el fin de autenticar usuarios. La API proporciona una implementación de cliente de WebAuthn, que admite el uso de autenticadores de roaming BLE, NFC y USB (llaves de seguridad), así como un autenticador de plataforma, que permite que el usuario se autentique 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 ello, aprovecha los Vínculos de recursos digitales. Para declarar asociaciones, aloja un archivo JSON de Vínculos de recursos digitales en tu sitio web y agrega 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 Androidcom.example.android
, estos son los 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.
Paso 2. Vincula 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>
Para obtener más información sobre cómo asociar tu app y tu sitio web, lee la documentación de Smart Lock para contraseñas en Android.