Un requisito previo principal para implementar una experiencia de acceso sin inconvenientes con Credential Manager en tu app y sitio web es establecer una asociación segura entre ellos. Esto se logra con archivos de Vínculos de recursos digitales, que permiten que los proveedores de credenciales compartan de forma segura las credenciales entre tu app y tu sitio web. Por ejemplo, un sitio web puede declarar que comparte credenciales con una app para Android o con otro sitio web usando un archivo de Digital Asset Links. El uso de Digital Asset Links permite que tus usuarios tengan una experiencia de acceso sin interrupciones y utilicen las mismas credenciales guardadas en las apps y los sitios web asociados.
Configura los Vínculos de recursos digitales entre tu app y tu sitio web
Para permitir que los proveedores de credenciales usen llaves de acceso y contraseñas de forma habitual en tu app y sitio web, crea un archivo de Digital Asset Links para tu app siguiendo estos pasos:
1. Crea el archivo JSON de Vínculos de recursos digitales
Crea un archivo llamado assetlinks.json con la siguiente estructura:
[
{
"relation" : [
"<array_of_permissions_granted_to_app>"
],
"target" : {
"namespace" : "android_app",
"package_name" : "<android_application_package_name>",
"sha256_cert_fingerprints" : [
"<sha256_certificate_fingerprint_of_signing_key>"
]
}
}
]
relation: Es un array de una o más cadenas que describen la relación que se declara. Para declarar que las apps y los sitios comparten credenciales de acceso, especifica las siguientes relaciones en un array:delegate_permission/common.handle_all_urls: Esta relación habilita los vínculos a la app para Android, lo que permite que tu app para Android controle todas las URLs web de un dominio específico.delegate_permission/common.get_login_creds: Esta relación permite compartir credenciales entre tu sitio web y tu app para Android.
target: Es un objeto que especifica el recurso al que se aplica la declaración.target.namespace: Configura este parámetro comoandroid_app.target.package_name: Establece este valor en el nombre del paquete declarado en el manifiesto de la app, por ejemplo,com.example.android.
sha256_cert_fingerprints: Son las huellas digitales SHA256 del certificado de firma de tu app. Para recuperar la huella digital SHA256 de tu app, consulta Cómo declarar la asociación de sitios web.
A continuación, se muestra un ejemplo de destino para una app:
[
{
"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" : [
SHA_HEX_VALUE
]
}
}
]
2. Aloja el archivo JSON de Vínculos de recursos digitales
Aloja el archivo de Vínculos de recursos digitales en la siguiente ubicación del dominio de acceso de tu sitio web:
```none
https://domain[:optional_port]/.well-known/assetlinks.json
```
Por ejemplo, si tu dominio de acceso es signin.example.com, aloja el archivo en https://signin.example.com/.well-known/assetlinks.json.
El tipo de MIME del archivo de Vínculos de recursos digitales debe ser JSON. Asegúrate de que el servidor envíe un encabezado Content-Type: application/json en la respuesta, con el estado HTTP establecido en 200.
3. Permite la recuperación del archivo de Vínculos de recursos digitales
Actualiza tu host para permitir que Google recupere tu archivo de Vínculos de recursos digitales. La mayoría de los sitios web permiten que cualquier agente automatizado recupere archivos en la ruta de acceso /.well-known/ para que otros servicios puedan acceder a los metadatos en esos archivos.
Si tienes un archivo robots.txt, permite que los rastreadores web recuperen /.well-known/assetlinks.json actualizando el archivo robots.txt de la siguiente manera:
User-agent: *
Allow: /.well-known/
4. Actualiza el manifiesto de la app
En el archivo de manifiesto de tu app, agrega las siguientes líneas en <application>:
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
5. Configura los Vínculos de recursos digitales para las contraseñas
Si usas Credential Manager para contraseñas, debes completar un paso adicional para configurar las vinculaciones de recursos digitales.
Agrega un objeto que especifique los archivos assetlinks.json que se cargarán en el archivo de manifiesto. Debes escapar cualquier apóstrofo y comillas que uses en la cadena, como se muestra en el siguiente ejemplo:
<string name="asset_statements" translatable="false">
[{
\"include\": \"https://signin.example.com/.well-known/assetlinks.json\"
}]
</string>
El vínculo https://signin.example.com/.well-known/assetlinks.json debe devolver una respuesta HTTP 200 y tener un encabezado Content-Type de application/json.
La verificación falla si la respuesta tiene un redireccionamiento HTTP 301 o 302, o un Content-Type que no sea JSON.
En el siguiente ejemplo, se muestra una solicitud de muestra y los encabezados de respuesta esperados:
> GET /.well-known/assetlinks.json HTTP/1.1
> User-Agent: curl/7.35.0
> Host: signin.example.com
< HTTP/1.1 200 OK
< Content-Type: application/json
Próximos pasos
Después de agregar las dependencias necesarias y configurar los vínculos de recursos digitales para las llaves de acceso, puedes usar Credential Manager para implementar los métodos de autenticación compatibles: llaves de acceso y Acceder con Google. Para comenzar, consulta las siguientes guías para desarrolladores:
- Configura llaves de acceso con Credential Manager: Aprende a implementar llaves de acceso, el método moderno y resistente al phishing para una autenticación segura y fácil de usar.
- Configura Acceder con Google con Credential Manager: Integra "Acceder con Google" para optimizar el acceso de los usuarios con Cuentas de Google.
- Soluciona errores comunes con Credential Manager: Obtén información para resolver errores comunes con Credential Manager.
- Integra la autenticación de Firebase: Permite que tus usuarios se autentiquen con Firebase usando sus Cuentas de Google.