Configura el uso compartido de credenciales sin problemas en apps y sitios web para Android

Maximiza la comodidad del usuario habilitando el uso compartido de credenciales sin problemas entre tus apps y sitios web en todas las plataformas. Cuando varios sitios web y apps para Android comparten un backend de administración de cuentas, esta función permite a los usuarios guardar las credenciales una vez y que se sugieran automáticamente en cualquier sitio web o app para Android vinculada.

Prácticas recomendadas

Para una experiencia del usuario y una seguridad óptimas, implementa el uso compartido de credenciales sin problemas en los siguientes puntos de contacto:

  • Formulario de acceso: Habilita el llenado automático de credenciales.
  • Formulario de registro: Almacena de forma segura credenciales nuevas para usarlas en todas las plataformas.
  • Formulario de cambio de contraseña: Sincroniza las actualizaciones de contraseñas en todas las plataformas.
  • Formulario de restablecimiento de contraseña: Permite el restablecimiento de contraseñas únicas para actualizar todas las plataformas.
  • Dominios de WebView: Extiende el uso compartido de credenciales a los dominios de WebView dentro de tu app que controlan la administración de cuentas (formularios de acceso al host, registro, cambio de contraseña o restablecimiento de contraseña).
  • Apps para Android

Este enfoque crea un sistema de administración de credenciales unificado, lo que mejora la comodidad y la seguridad del usuario.

Cuando diseñes tus sitios web de administración de cuentas, te sugerimos que sigas estas prácticas recomendadas para los sitios de administración de cuentas:

Cuando diseñes tus apps para Android, te recomendamos que integres tu app con el Administrador de credenciales de Android.

Requisitos previos

Antes de configurar el uso compartido de credenciales sin problemas, asegúrate de tener lo siguiente para cada plataforma:

En cada app para Android:

Para cada sitio web, haz lo siguiente:

  • Capacidad para publicar un archivo /.well-known/assetlinks.json en cada dominio respectivo, según la sintaxis de los Vínculos de recursos digitales (DAL)
  • Se debe poder acceder a todos los dominios de administración de cuentas (formularios de acceso, registro, cambio o restablecimiento de contraseña) a través de HTTPS.

Habilita el uso compartido de credenciales sin problemas entre apps y sitios web para Android

Para configurar el uso compartido de credenciales sin problemas entre apps y sitios web, crea y publica listas de declaraciones de Vínculos de recursos digitales que declaren qué entidades (sitios web o apps para Android) pueden compartir credenciales.

Para declarar una relación de uso compartido de credenciales, sigue estos pasos:

  1. Crea un archivo assetlinks.json con instrucciones que vinculen al sitio web y a la app para Android, siguiendo la sintaxis de la lista de instrucciones de DAL:

    [
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"web",
          "site":URL
        }
      },
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"android_app",
          "package_name":"APP_ID",
          "sha256_cert_fingerprints":[
            "SHA_HEX_VALUE"
          ]
        }
      }
    ]
    

    Donde URL es la URL de tu sitio, APP_ID es tu ID de aplicación para Android y SHA_HEX_VALUE es la huella digital SHA256 de tu certificado de firma de la app para Android.

    El campo relation describe la relación que se declara. Para declarar que las apps y los sitios comparten credenciales de acceso, especifica las relaciones como delegate_permission/common.get_login_creds. Obtén más información sobre las cadenas de relación en DAL.

    El campo target es un objeto que especifica el recurso al que se aplica la declaración.

    Los siguientes campos identifican un sitio web:

    namespace

    web

    site

    La URL del sitio web, en el formato https://domain[:optional_port]; por ejemplo, https://www.example.com.

    domain debe estar completamente calificado y se debe omitir optional_port cuando se usa el puerto 443 para HTTPS.

    Un destino site solo puede ser un dominio raíz: no puedes limitar una asociación de app a un subdirectorio específico. No incluyas una ruta en la URL, como una barra final.

    No se considera que los subdominios coincidan, es decir, si especificas domain como www.example.com, el dominio www.counter.example.com no se asociará con tu app.

    En los siguientes campos, se identifica una app para Android:

    espacio de nombres

    android_app

    package_name

    El nombre de paquete declarado en el manifiesto de la app. Por ejemplo, com.example.android

    sha256_cert_fingerprints

    Las huellas digitales SHA256 del certificado de firma de tu app.

  2. Aloja el archivo JSON de Vínculos de recursos digitales en la siguiente ubicación de los dominios de acceso: https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json, donde DOMAIN está completamente calificado y se debe omitir OPTIONAL_PORT cuando se usa el puerto 443 para HTTPS.

  3. Declara la asociación en la app para Android. Para ello, incorpora una declaración en el archivo res/values/strings.xml de tu app para Android que vincule a la lista de declaraciones que creaste en el paso 1. Agrega un objeto que especifique los archivos assetlinks.json que se cargarán. Por ejemplo:

      <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json\"
    }]
    </string>
    

    Reemplaza DOMAIN y OPTIONAL_PORT (se deben omitir cuando se usa el puerto 443 para HTTPS), por ejemplo, https://www.example.com. Reemplaza cualquier apóstrofo y comillas que uses en la cadena.

    También puedes agregar un fragmento JSON a tu archivo strings.xml, como se muestra en la documentación de DAL, pero usar la sentencia include te permite cambiar las sentencias sin publicar una versión nueva de tu app.

  4. Para hacer referencia a la sentencia en el manifiesto, agrega la siguiente línea al archivo AndroidManifest.xml de la app en <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
    
  5. Publica la nueva versión de tu app para Android en Google Play Console

Después de seguir estos pasos, habrás configurado correctamente el uso compartido de credenciales sin inconvenientes entre tu sitio web y tu app para Android.

Ten en cuenta que esta no es la única forma válida de configurar DAL para el uso compartido de credenciales, pero este enfoque simplifica el proceso futuro de agregar entidades nuevas a tu red de uso compartido de credenciales sin problemas, promueve la reutilización del código y reduce el potencial de errores durante las actualizaciones.