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.
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.
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:
- Instala la aplicación de billetera de demostración siguiendo las instrucciones.
- Descarga una aplicación de billetera demo en tu dispositivo Android. El código fuente se puede encontrar en el repositorio de credenciales de identidad de la Fundación OpenWallet.
- Ejecuta un comando
adb install -t <path-to-apk>
para instalar la app.
- 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.
- Navega a https://digital-credentials.dev con Chrome 128 o versiones posteriores.
- Presiona Request Credentials (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:
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:
protocol
: Especifica un protocolo de intercambio con una cadena. En el momento de la prueba de origen, el protocolo principal que se está desarrollando es"openid4vp"
.request
: Completa los parámetros que aceptan las apps de billetera digital para el protocolo especificado. Para"openid4vp"
, los parámetros se definen en la especificación OpenID para la presentación verificable (OID4VP) para la API de credenciales digitales del W3C.
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 navegadores, las conversaciones activas se facilitan 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.
- Solicita un token para tu origen.
- 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.
- Agrega una etiqueta
Compartir comentarios
Si tienes comentarios sobre la API de Digital Credentials, envíalos a la herramienta de seguimiento de errores de Chromium exclusiva.