Cómo empezar con el desarrollo de Identity Wallet

En este artículo para desarrolladores y otras partes interesadas, explicamos cómo emitir o verificar la «certificación electrónica de atributos» o las «credenciales verificables» de dichas carteras de identidad digital.

,
24 Jun
,
2025
# min read
Guía sencilla para desarrolladores de eID de monederos digitales europeos

Uno de los beneficios clave de las carteras de identidad digital, como Google Wallet, el Billetera de identidad digital de la Unión Europea («EUDI»), Licencia de conducir móvil («mDL») o carteras similares permiten al propietario compartir cierta información verificable (por ejemplo, demostrar que el propietario es mayor de 18 años) desde fuentes confiables.

En este artículo para desarrolladores y otras partes interesadas, explicamos cómo emitir o verificar la «certificación electrónica de atributos» o las «credenciales verificables» de dichas carteras de identidad digital.

Cómo empezar con el desarrollo de la identificación de carteras

Para comenzar con el desarrollo de la identificación de carteras, un buen ámbito de desarrollo es que un sitio web reciba datos de la billetera. Si estás empezando desde cero, entonces hay 3 pasos principales:

1. obtener un monedero, normalmente una aplicación móvil; sin embargo, también puede ser una aplicación web;

2. tener una certificación de atributo o credencial verificable emitida en la billetera [por ejemplo, una mDL];

Nota: La billetera está inicialmente vacía.

3. Solicita la credencial [desde la billetera] y los pasos para verificarla son los siguientes:

  • la consulta de credenciales debe compilarse y, opcionalmente, firmarse y cifrarse;
  • la solicitud de credenciales debe enviarse; y
  • las credenciales deben analizarse y validarse.

En este artículo, nos centraremos en el paso de solicitud de credenciales.
→ En esta etapa, es muy importante garantizar que el la credencial es emitida por una persona de confianza (p. ej., una agencia gubernamental o una entidad acreditada).

Por ejemplo, en los EE. UU., el Departamento de Vehículos Motorizados (DMV) está emitiendo las MDL en ciertos estados. Como cualquier persona puede enviar cualquier credencial a un monedero, es importante tener mucho cuidado a la hora de decidir en qué partes confiar.

Nota: Nos centraremos en enviar la solicitud de credenciales y en analizar y verificar las credenciales en artículos posteriores.

Solicitud de credenciales

Hay dos tipos de flujos al solicitar credenciales, que son el mismo dispositivo y el mismo dispositivo remoto.

1. Mismo dispositivo - En el mismo flujo del dispositivo, es posible abrir la aplicación desde el navegador y compartir los datos directamente.

2. Dispositivo remoto - En el flujo de dispositivos remotos, las credenciales se transfieren mediante el protocolo CTAP. Para este flujo, es habitual iniciar la transacción escaneando un código QR o mediante NFC.

Si usa el mismo flujo de dispositivos, luego, el sistema operativo mostrará un mensaje para elegir la billetera desde la que desea solicitar la credencial.

Para los fines de este proceso, utilizaremos un API de credenciales de identidad. Cuando se utiliza la API IdentityCredential, el navegador y el sistema operativo gestionan la interacción entre la billetera y el sitio web, lo que facilita la creación de la aplicación.

Puedes ver la tabla de compatibilidad del navegador aquí: https://developer.mozilla.org/en-US/docs/Web/API/IdentityCredential

Para realizar pruebas, utilizaremos la aplicación CMWallet que tiene el código fuente disponible aquí: https://github.com/digitalcredentialsdev/CMWallet. Puedes crear esta cartera a partir del código fuente tú mismo o también puedes instalar los apk-s incluidos en este repositorio de Github.

Cuando se instala CMWallet, luego, para un chequeo de cordura, puedes dirigirte a https://digital-credentials.dev/ y asegúrate de poder solicitar y compartir las credenciales de tu aplicación de prueba CMWallet en este sitio web. Google ha creado un buen sitio de pruebas para probar las integraciones de monederos y crearemos la misma solución en nuestro propio sitio web.

Nota: En este momento, la API DigitalCredentials aún está en desarrollo y debes habilitar Origin Trials https://developer.chrome.com/docs/web-platform/origin-trials.

Debe hacer esto antes de empezar a intentar obtener las credenciales en su sitio web o recibirá errores extraños.

Solicitar la llamada a la API de credenciales en sí es bastante fácil y el flujo se describe bastante bien aquí: https://developers.google.com/wallet/identity/verify/accepting-ids-from-wallet-online#web

            credentialResponse = await navigator.credentials.get({
                digital: {
                    providers: [{
                        protocol: “openid4vp”,
                        request: request
                    }]
                },
            })

El trabajo principal aquí es compilar el DCQL para la solicitud. Discutiremos esto en detalle en publicaciones de blog posteriores. Hasta entonces, puedes usar https://digital-credentials.dev/ y cree la solicitud con el botón «Mostrar solicitud».

Es posible que algunas carteras quieran que la consulta esté firmada y, posiblemente, incluso cifrada, de modo que haya más seguridad y privacidad.

Si todo va bien, entonces tendrás cadena base64 que contiene la credencial que se compartió desde la billetera.

Validación de credenciales

Las credenciales están en formato CBOR codificado en base64. Después de analizarlos, puede obtener los datos y, para asegurarse de que son válidos, debe verificar que el emisor correcto, en quien confía, los haya firmado; de lo contrario, cualquier persona puede enviarle cualquier cosa. La validación debe realizarse en el servidor para mayor seguridad.

→ Puedes encontrar los certificados de emisor de Google Wallet para verificar los emisores aquí: https://developers.google.com/wallet/identity/verify/supported-issuers-iaca-certs#mdl

En una entrada de blog posterior, daremos detalles sobre cómo validar las credenciales.
Por ahora, enumeraremos los pasos principales de la siguiente manera:

1. crear la transcripción de la sesión: este es el conjunto de datos que contendrá toda la información relevante para la validación;

2. valide el certificado del emisor y asegúrese de que es en quien puede confiar;

3. verificar la firma del MSO (18013-5 Sección 9.1.2);

4. calcular y comprobar los ValueDigests para los elementos de datos (18013-5 Sección 9.1.2); y

5. Verifique la firma de DeviceSignature (18013-5 Sección 9.1.3).

Puede obtener más información sobre la validación de credenciales aquí: https://developers.google.com/wallet/identity/verify/accepting-ids-from-wallet-online#browser-handover

Otros recursos y más lecturas

Estos son algunos otros recursos que son útiles para comenzar y obtener más información sobre cómo identificar a las personas en línea con diferentes carteras de identidad, como EUDIW, Google Wallet, etc.:

Una de las especificaciones de la API para la interacción entre su sitio web y su billetera es OpenID4VP: https://openid.net/specs/openid-4-verifiable-presentations-1_0.html

Aplicación de verificación de California mDL que permite comprobar las credenciales de CA mDL: https://github.com/stateofca/opencred

Además, Alemania tiene un proyecto que apoyó 4 prototipos de EUDIW y puedes encontrar información sobre ellos aquí: https://www.sprind.org/en/actions/challenges/eudi-wallet-prototypes 

Por ejemplo, la información de la aplicación de prueba de Ubique está aquí https://funke.ubique.ch/. Para realizar todo el flujo, debe:

Para facilitar la comprensión de las soluciones técnicas de la EUDIW, la UE ha compilado una arquitectura y un marco de referencia ARF, un conjunto de normas y especificaciones técnicas comunes y un conjunto de directrices y mejores prácticas comunes. Se ha hecho fácil de consumir en esta página: https://eu-digital-identity-wallet.github.io/eudi-doc-architecture-and-reference-framework/latest/architecture-and-reference-framework-main/

Además de esto, vemos una gran cantidad de código fuente, descripción técnica y aplicaciones de muestra en esta página: https://github.com/eu-digital-identity-wallet/.github/blob/main/profile/reference-implementation.md#eudi-wallet-reference-implementation

No solo Google

La Apple Wallet porque la identidad digital también se usa ampliamente, pero actualmente solo está disponible en aplicaciones y no en navegadores, y solo para un conjunto limitado de casos comerciales. Encontrarás más información para desarrolladores aquí: https://developer.apple.com/wallet/get-started-with-verify-with-wallet/

→ También debemos mencionar Cartera Samsung verificación, donde se encuentran los documentos del desarrollador en esta página: https://developer.samsung.com/wallet/api_new/verifywith/overview.html

Si tienes más preguntas o necesitas ayuda para el desarrollo de la billetera, no dudes en extender la mano - ¡estamos aquí para ayudar!

More latest articles

See all news
See all news