En línea
Los IDs digitales se pueden aceptar en los flujos en la aplicación y web. Para aceptar credenciales de la Billetera de Google, deberás hacer lo siguiente:
- Realiza la integración a través de la app o la Web siguiendo las instrucciones proporcionadas.
- Completa este formulario para solicitar y aceptar las Condiciones del Servicio para aceptar credenciales de la Billetera de Google.
Requisitos previos
Para probar la presentación de los IDs, primero debes inscribirte en el programa de versión beta pública con la cuenta de prueba deseada. Luego, proporciona los siguientes detalles a tu contacto de Google designado.
- Vínculo a las Condiciones del Servicio
- Logotipo
- Sitio web
- ID de paquete de Play Store (para integraciones de apps para Android)
- El ID de Gmail que se usó para unirse a la versión beta pública
Formatos de credenciales compatibles
Existen varios estándares propuestos que definen el formato de datos de los documentos de identidad digitales, y dos de ellos están ganando una gran aceptación en la industria:
- mdocs: Definido por la ISO
- Credenciales verificables de W3C: Definidas por el W3C.
Si bien el Administrador de credenciales de Android admite ambos formatos, por el momento, la Billetera de Google solo admite IDs digitales basados en mdoc.
Experiencia del usuario
Cuando una aplicación solicita atributos de identidad, se produce el siguiente proceso:
Descubrimiento de credenciales: La aplicación consulta las billeteras disponibles para identificar las credenciales que pueden satisfacer la solicitud. Luego, Android presenta un selector de IU del sistema en el que se muestra la información que se compartirá. Esto le permite al usuario tomar una decisión fundamentada sobre cuál credencial usar.
Selección del usuario e interacción con la Billetera: El usuario selecciona una credencial y Android invoca la app de la billetera correspondiente para completar la transacción. Es posible que la app de la billetera presente su propia pantalla de consentimiento o requiera una confirmación biométrica.
Resultado: Si el usuario da su consentimiento, las credenciales de identidad seleccionadas se comparten con la aplicación solicitante. Si el usuario rechaza la solicitud, se muestra un error.
En la app
Para solicitar credenciales de identidad desde tus apps para Android, sigue estos pasos:
Actualiza las dependencias
En el archivo build.gradle de tu proyecto, actualiza las dependencias para usar el Administrador de credenciales (beta):
dependencies {
implementation("androidx.credentials:credentials:1.5.0-alpha05")
// optional - needed for credentials support from play services, for devices running Android 13 and below.
implementation("androidx.credentials:credentials-play-services-auth:1.5.0-alpha05")
}
Cómo configurar el Administrador de credenciales
Para configurar e inicializar un objeto CredentialManager
, agrega una lógica similar a la siguiente:
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = IdentityCredentialManager.Companion.getClient(context)
Atributos de identidad de la solicitud
// Retrieves the user's digital identites from wallet apps for your app.
val getIdentityCredentialOption = GetDigitalCredentialOption(
requestJson = requestJson, // this is what partners needs to set, example JSON specified below
)
val result = credentialManager.getCredential(request = GetCredentialRequest(credentialOptions, ...)
El llamador de la app proporciona todos los parámetros de IdentityRequest como una cadena JSON. Aquí se representa como el parámetro requestMatcher
de CredentialOption. El Administrador de credenciales no se preocupa por el contenido de ese archivo JSON. Esta solicitud JSON se pasará directamente a las billeteras, que luego son responsables de analizarla y decidir qué credenciales pueden entregar la solicitud. La implementación completa se puede encontrar en la app de ejemplo.
Anticipamos que el W3C definirá esta solicitud JSON como un componente de la API web. Esta estandarización permitirá que los navegadores transmitan la solicitud directamente a Android.
Para darte una idea de cómo se vería esa solicitud, aquí tienes un ejemplo de una solicitud de mdoc:
{
"selector": {
"format": [
"mdoc"
],
"doctype": "org.iso.18013.5.1.mDL",
"fields": [
{
"namespace": "org.iso.18013.5.1",
"name": "family_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "given_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "age_over_21",
"intentToRetain": false
}
]
},
"nonce": "3cydsUF9xNFyBDAAWOct09hEeSqrFX2WB2r0G6f8Ol0=",
"readerPublicKey": "BApmGdElal2-1dtafsdHVRa1EpAWZfhlQj_iof2I8L3V8_dCK1gVR0_12E4ZSQ2LcqXRd4zxVeKEqU1wUSgGWUU="
}
La respuesta muestra un identityToken (string JSON), definido por el W3C. La app de la Billetera es responsable de elaborar esta respuesta.
Ejemplo:
{
"token": "<base64 encoded response>"
}
Envía el token y procésalo en el servidor
Cuando recibas el identityToken, tu aplicación debería transmitirlo a tu servidor de aplicaciones para su verificación. El paso inicial consiste en decodificar el token del formato base64. El array de bytes resultante representa los datos CBOR, que cumplen con el siguiente CDDL.
CredentialDocument = {
"version": tstr, // Set to "ANDROID-HPKE-v1"
"pkEm": bstr, // Public key, in uncompressed form
"cipherText": bstr // The encrypted data
}
El siguiente paso es calcular la SessionTranscript de ISO/IEC 18013-5:2021 con una estructura de traspaso específica de Android:
SessionTranscript = [
null, // DeviceEngagementBytes not available
null, // EReaderKeyBytes not available
AndroidHandover // Defined below
]
AndroidHandover = [
"AndroidHandoverv1", // Version number
nonce, // nonce that comes from request
appId, // RP package name
pkRHash, // The SHA256 hash of the recipient public key
]
El cipherText se encripta con la encriptación HPKE. Para desencriptarlo, usa SessionTranscript como los datos autenticados adicionales, la clave privada de conversiones avanzadas que se generó anteriormente y la siguiente configuración:
- KEM: DHKEM(P-256, HKDF-SHA256)
- KDF: HKDF-SHA256
- AEAD: AES-128-GCM
El texto simple resultante son los bytes del CBOR de DeviceResponse, como se define en la norma ISO/IEC 18013-5:2021. DeviceResponse debe validarse de acuerdo con la cláusula 9 de ISO/IEC 18013-5:2021. Esto incluye varios pasos, como verificar que el mdoc provenga de un emisor de confianza y que el dispositivo de destino firme la respuesta. La clase DeviceResponseParser del proyecto de credenciales de identidad de OpenWallet Foundation se puede usar para parte de este proceso de validación.
Web
Para solicitar credenciales de identidad con la API de credenciales digitales en Chrome, deberás registrarte en la prueba de origen de la API de credenciales digitales.
Presencial
Para aceptar IDs de la Billetera de Google, debes seguir estos pasos:
- Compila o adquiere un lector para aceptar los IDs según se define en la norma ISO 18013-5.
- Carga certificados IACA en el lector para asegurarte de que los IDs aceptados sean auténticos
- Prueba tu solución
- Registra tu aplicación en la Billetera de Google
Compila o adquiere un lector para aceptar los IDs según se define en la norma ISO 18013-5.
Los IDs de la Billetera se implementan de acuerdo con el estándar ISO 18013-5 para licencias de conducir en dispositivos móviles. Usan la interacción basada en NFC o códigos QR junto con BLE como mecanismo de transferencia de datos, por lo que cualquier dispositivo que pueda implementar esos aspectos del estándar puede actuar como lector, incluso una aplicación para dispositivos móviles. Como el estándar es abierto, hay varias implementaciones de terceros disponibles en el mercado. Además, puedes implementar la funcionalidad directamente si es necesario.
Si quieres obtener orientación para implementar la funcionalidad por tu cuenta, consulta nuestra app de lector de referencia de código abierto para Android, que implementa el estándar ISO y puede aceptar licencias de conducir digitales de la Billetera de Google.
Para comenzar, compila y ejecuta la app de lector de referencias:
- Clona el repositorio de apps de referencia
- Abre el proyecto en Android Studio.
- Compila y ejecuta el destino
appverifier
en tu dispositivo Android o emulador.
Carga los certificados de la IACA en el lector para asegurarte de que los IDs aceptados sean auténticos.
Para validar una credencial real, debes tener un ID en la billetera de un emisor compatible. A continuación, se proporciona una lista de las entidades emisoras compatibles con la Billetera de Google, junto con vínculos a sus certificados para su verificación.
Prueba tu solución
Para probar tu solución, compila y ejecuta nuestra aplicación para Android de referencia de código abierto. Estos son los pasos para compilar y ejecutar la app que contiene la referencia:
- Clona el repositorio de apps de referencia
- Abre el proyecto en Android Studio.
- Compila y ejecuta el destino
appholder
en tu dispositivo Android o emulador.
(Opcional) Registra tu aplicación en la Billetera de Google
Completa este formulario para registrar tu aplicación en la Billetera de Google.