Presentamos la prueba de origen de la API de credenciales digitales

Fecha de publicación: 4 de septiembre de 2024; Última actualización: 16 de octubre de 2024

A partir de Chrome 128, se iniciará una prueba de origen para la API de Digital Credentials. La API de Digital Credentials es una nueva API de plataforma web que permite a los sitios web solicitar de forma selectiva información verificable sobre el usuario a través de credenciales digitales, como una licencia de conducir o una tarjeta de identificación nacional almacenada en una billetera digital.

Segundo plano

La identidad digital del mundo real se está convirtiendo en una realidad, ya que muchas entidades públicas y privadas comienzan a emitir credenciales digitales vinculadas a dispositivos. Por ejemplo, las licencias de conducir y los IDs para dispositivos móviles de determinados estados de EE.UU. (como Arizona, California, Colorado, Georgia y Maryland) ahora se pueden aprovisionar en apps de billetera digital, como la Billetera de Google, en dispositivos móviles. También están surgiendo reglamentaciones sobre la aceptación de credenciales digitales para ciertas verificaciones en línea, y eIDAS 2.0 es un ejemplo.

Licencia de conducir digital en la Billetera de Google
Licencia de conducir digital en la Billetera de Google.

Las características de una credencial digital dependen de su formato, aunque suelen incluir lo siguiente:

  • Mayor seguridad y privacidad: El uso de encriptación avanzada y métodos de autenticación sólidos ayuda a proteger los datos sensibles y garantiza un acceso seguro. Por ejemplo, presentar una credencial suele estar protegida por una autenticación del usuario a través de la app de la billetera.
  • Divulgación selectiva: Las partes de confianza (RP) pueden solicitar información seleccionada de la credencial, lo que permite a los usuarios limitar los datos compartidos a lo que se necesita para el caso de uso. Por ejemplo, se puede compartir si un usuario es mayor de 18 años sin revelar su fecha de nacimiento.
  • Interoperabilidad: La credencial debe cumplir con los estándares internacionales, lo que permite la compatibilidad con diferentes sistemas y países, y facilita la aceptación transfronteriza.
  • Verificabilidad: El emisor firma digitalmente los datos de credenciales compartidos. El RP puede verificar esta firma para verificar la autenticidad de los datos.

Debido a la naturaleza verificable de las credenciales digitales, podrían habilitar casos de uso como los siguientes:

  • Verificación de edad: Solicita la edad para verificarla antes de publicar contenido con restricción de edad o comprar artículos con restricción de edad.
  • Verificación de identidad: Solicita el nombre y la dirección para verificar la identidad de una persona con fines de cumplimiento legal o prevención de fraudes.
  • Verificación de privilegios de conducción: Verifica la elegibilidad de una persona para conducir (por ejemplo, cuando alquila un automóvil).

A medida que los sitios web comenzaron a comunicarse directamente con aplicaciones de billetera móvil (por ejemplo, mediante esquemas de URL personalizados) para solicitar credenciales digitales para varios casos de uso, los navegadores ven una oportunidad para que esta interacción sea más segura, resistente al abuso y más fácil de usar a través de una API diseñada a tal efecto.

Presentamos la API de credenciales digitales

La API de Digital Credentials es una nueva API de plataforma web que permite que los sitios web de RP soliciten la presentación de credenciales digitales desde las apps de billetera. La API está disponible en Chrome como una prueba de origen a partir de Chrome 128.

La API no depende del protocolo, lo que permite que el RP especifique un protocolo según sus requisitos. Cuando un RP realiza una solicitud, el navegador la envía al sistema operativo para dispositivos móviles, que busca una credencial coincidente en las aplicaciones de billetera instaladas. Si se encuentra alguna, el sistema operativo para dispositivos móviles le solicita al usuario que seleccione una y envía la solicitud a la billetera que eligió. Después de una autenticación local, la billetera muestra una respuesta que contiene los datos de credenciales solicitados.

Diagrama de comunicación entre el navegador, la billetera y el usuario de confianza.

En primer lugar, Chrome admitirá la API en Chrome para Android para solicitar credenciales de las apps de billetera en el mismo dispositivo. En el futuro, planeamos admitir la versión para computadoras de Chrome para solicitar credenciales en varios dispositivos desde otro dispositivo móvil.

En el lanzamiento, la Billetera de Google se integrará a la API de credenciales digitales, lo que permitirá que organizaciones y empresas seleccionadas inicien una solicitud para que los usuarios presenten su ID en línea, a través de Chrome en Android, y verifiquen la autenticidad de los datos transmitidos mediante el examen de la firma criptográfica. Para participar, completa este formulario y expresa tu interés en aceptar IDs digitales de la Billetera de Google.

Las Cuentas de Google también usarán pronto la API para verificar la fecha de nacimiento de ciertos usuarios. Los usuarios que residan en un estado de EE.UU. compatible podrán usar su ID estatal o licencia de conducir aprovisionada en las apps de billetera disponibles (incluida la Billetera de Google) para compartir sin problemas solo su fecha de nacimiento con Google sin compartir otros detalles de su identidad. Esto permite a los usuarios demostrarle a Google, de una manera que preserva la privacidad, que cumplen con los requisitos de edad relacionados con la cuenta.

Probar

Requisitos:

  • Servicios de Google Play 23.40 o versiones posteriores
  • Chrome 128 o versiones posteriores
  • Habilita la marca en chrome://flags#web-identity-digital-credentials

Para probar la API de Digital Credentials, sigue estas instrucciones:

  1. Instala la aplicación de billetera de demostración siguiendo las instrucciones.
  2. Inicia la app de IC Wallet y aprovisiona una licencia de conducir digital (mDL) de demostración.
    • Presiona el botón de menú y selecciona Agregar documento firmado por el usuario.
  3. Navega a https://digital-credentials.dev con Chrome 128 o versiones posteriores.
  4. Presiona Solicitar credenciales (OpenID4VP).

Consulta la demostración que usa https://digital-credentials.dev, un sitio web de prueba para que los desarrolladores generen solicitudes de credenciales para diferentes atributos:

A continuación, te mostramos cómo funciona la demostración paso a paso:

1. El usuario llega al sitio web de la parte de confianza y se le solicita que presente su apellido verificado, nombre y una garantía de edad superior a los 21 años.
2. El navegador confirma si el usuario tiene la intención de compartir alguna credencial digital con este sitio web.
3. El sistema operativo muestra la información que se solicita y las credenciales aptas que pueden coincidir con la solicitud para que el usuario la seleccione y la complete.
4. La billetera autentica al usuario de forma local con el desbloqueo de pantalla.

5. La credencial digital solicitada ahora se pasa al sitio web de la parte de confianza.

Cómo funciona la API

La API de Digital Credentials se basa en la API de Credential Management, pero desde una plataforma de API independiente: navigator.identity. Cuando se llama a navigator.identity.get(), el sitio web puede solicitar una credencial digital almacenada en una app de billetera móvil.

// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
  signal: controller.signal,
  digital: {
    providers: [{
      protocol: "openid4vp",
      request: {
        response_type: "vp_token",
        nonce: "n-0S6_WzA2Mj",
        client_metadata: {...},
        presentation_definition: {...}
      }
    }],
  }
});

La plataforma de API básica es similar a navigator.credentials.get(), excepto que solo acepta el tipo de credencial "digital". Dentro del tipo de credencial digital, agrega el array providers que contiene IdentityRequestProvider con los siguientes parámetros básicos:

Carga útil de ejemplo para el tipo de credencial digital con OID4VP:

{
  protocol: 'openid4vp',
  request: {
    response_type: 'vp_token',
    nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
    client_metadata: {},
    presentation_definition: {
      id: 'mDL-request-demo',
      input_descriptors: [{
        id: "org.iso.18013.5.1.mDL",
        format: {
          mso_mdoc: {
            alg: ["ES256"]
          }
        },
        constraints: {
          limit_disclosure: "required",
          fields: [
            {
              path: ["$['org.iso.18013.5.1']['family_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['given_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['age_over_21']"],
              intent_to_retain: false
            }
          ]
        }
      }],
    }
  }
}

Con esta solicitud, las billeteras que tengan mDL en el dispositivo proporcionarán un conjunto de credenciales verificables que contenga lo siguiente:

  • Es el apellido del usuario.
  • Es el nombre del usuario.
  • Un valor booleano que indica si el usuario tiene más de 21 años o no.

Este es un ejemplo de carga útil de respuesta:

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

En este ejemplo, la credencial se solicitó con el protocolo "openid4vp" y la respuesta contiene "vp_token" en la propiedad data. Consulta la especificación OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API para obtener información sobre cómo analizar la respuesta y verificar la credencial.

La API de credenciales digitales es compatible con Chrome en Android como una prueba de origen. Por el momento, Chrome para computadoras de escritorio y iOS no lo admiten. En el caso de otros motores de navegador, se facilitan conversaciones activas a través del grupo comunitario de Web Incubator del W3C.

Participa en la prueba de origen

Para el desarrollo, puedes habilitar la API de credenciales digitales de forma local activando la marca de Chrome chrome://flags#web-identity-digital-credentials en Chrome 128 o versiones posteriores.

Esta función también está disponible como prueba de origen. Las pruebas de origen te permiten probar funciones nuevas y enviar comentarios sobre su usabilidad, practicidad y eficacia a la comunidad de estándares web. Para obtener más información, consulta Cómo comenzar a usar las pruebas de origen. Para registrarte en esta o en otra prueba de origen, visita la página de registro.

  1. Solicita un token para tu origen.
  2. Agrega el token a tus páginas. Existen dos maneras de hacerlo:
    • Agrega una etiqueta <meta> origin-trial al encabezado de cada página. Por ejemplo, podría verse así: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Si puedes configurar tu servidor, también puedes agregar el token con un encabezado HTTP Origin-Trial. El encabezado de respuesta resultante debería verse de la siguiente manera:Origin-Trial: TOKEN_GOES_HERE.

Compartir comentarios

Si tienes comentarios sobre la API de Digital Credentials, envíalos a la herramienta de seguimiento de errores de Chromium exclusiva.