Publicar una acreditación
Publicar una acreditación en el TIR es un proceso en dos fases:
- Generar el JWT de la acreditación — usando el CLI de acreditaciones.
- Registrarlo en la blockchain — enviando las transacciones correspondientes al TIR a través de la API JSON-RPC.
En la operación actual de la red, el paso de registro en la blockchain (fase 2) lo ejecuta un operador de ISBE. Genera el JWT con el CLI (fase 1) y envíalo al equipo de ISBE junto con el dominio, el DID del sujeto y los tipos de credenciales que quieres acreditar.
Prerrequisitos
Antes de generar una acreditación necesitas:
- Un DID registrado en el entorno de destino con una clave P-256 y la relación
assertionMethod. Si no lo tienes, sigue primero la guía de la sección DID. - El CLI de acreditaciones instalado:
isbe-identity-accreditation-cli. - La clave privada P-256 del DID que firmará la acreditación, en formato JWK.
- Para acreditar un TI: la URL de tu acreditación TAO en el TIR (te la facilita ISBE).
- Para acreditar una TAO: la URL de tu acreditación RTAO en el TIR (solo aplica si eres RTAO).
Para la configuración inicial del CLI y el formato del fichero de clave, consulta la guía detallada en DID → Cadena de confianza.
Flujo completo
[CLI] generate --type tao/ti → JWT de acreditación (eyJ...)
│
▼
[Enviar a ISBE]
│
▼
[Operador ISBE] setAttributeMetadata → tx no firmada
[Operador ISBE] setAttributeData → tx no firmada
[Operador ISBE] firmar + sendSignedTransaction
│
▼
[TIR] atributo on-chain (*) registrado
│
▼
URL pública: <tir-url>/v1/issuers/{did}/attributes/{attributeId}
Fase 1: Generar el JWT con el CLI
Acreditación RTAO
Esta operación solo la ejecuta ISBE. Se documenta aquí por completitud:
pnpm run cli generate \
--sub did:isbe:uc:<DID_ENTIDAD> \
--domain ISBE \
--type rtao \
--attribute "<64 CARACTERES HEX ALEATORIOS>" \
--exp 2090222442
El parámetro --exp es un timestamp Unix. 2090222442 corresponde aproximadamente a enero de 2036.
Acreditación TAO
./isbe-accreditation-cli.sh generate \
--sub <DID_SUJETO> \
--domain <DOMINIO> \
--type tao \
--attribute "<64 CARACTERES HEX ALEATORIOS>" \
--accreditedFor <TIPO_CREDENCIAL> [<TIPO_CREDENCIAL_2> ...] \
--accreditedSchemas <URL_SCHEMA> [<URL_SCHEMA_2> ...] \
--accreditedBy <URL_ACREDITACION_PADRE_EN_TIR> \
--exp <TIMESTAMP_UNIX>
Ejemplo completo:
pnpm run cli generate \
--sub did:isbe:uc:zj4sk7oEMx1SGNAzibWxVAV \
--domain ISBE \
--type tao \
--attribute "abfc5a265e1b3aa60718619c0041e3c051686fd05d0f0954679eaa756136b343" \
--accreditedFor IsbePortalLearCredential \
--accreditedSchemas https://raw.githubusercontent.com/alastria/isbe-identity-schemas-repository/main/use-cases/isbe/portal/lear/portalLear-schema.json \
--accreditedBy "https://tir.portal.redisbe.com/trusted-issuers-registry/v1/issuers/did:isbe:uc:z12kVar5p6bD5WCjEJcQ18Zyt8XV/attributes/fad7068b8f890f20b86554be9f9d66d6b0ce08ec3b057a937e21f8a30ec545c7" \
--exp 2090222442
Acreditación TI
./isbe-accreditation-cli.sh generate \
--sub <DID_SUJETO> \
--domain <DOMINIO> \
--type ti \
--attribute "<64 CARACTERES HEX ALEATORIOS>" \
--accreditedFor <TIPO_CREDENCIAL> \
--accreditedSchemas <URL_SCHEMA> \
--accreditedBy <URL_ACREDITACION_TAO_EN_TIR> \
--exp <TIMESTAMP_UNIX>
Las restricciones para una acreditación TI son:
- El dominio debe coincidir con el de la TAO padre.
- Los tipos y schemas en
--accreditedFor/--accreditedSchemasdeben ser subconjunto de los autorizados por la TAO padre.
Parámetros del CLI
| Parámetro | Descripción |
|---|---|
--sub | DID del sujeto de la acreditación (la entidad que recibirá el rol). |
--domain | Dominio de la acreditación (p. ej. ISBE, ISBE-DEV). |
--type | Tipo: rtao, tao o ti. |
--attribute | 64 caracteres hexadecimales aleatorios. Este valor es el reservedAttributeId y el attributeId en el TIR. |
--accreditedFor | Uno o varios tipos de VC que la acreditación habilita (separados por espacios). |
--accreditedSchemas | URLs de los schemas correspondientes a --accreditedFor (1:1). |
--accreditedBy | URL del TIR de la acreditación padre. Para RTAO no se usa. |
--exp | Expiración en timestamp Unix. |
Salida del CLI
El CLI imprime un JWT (comenzando por eyJ...). Guarda este JWT: es el que debes entregar a ISBE para su publicación en la blockchain.
Fase 2: Publicación en la blockchain
El operador de ISBE ejecuta los tres pasos de la API JSON-RPC del TIR:
- Llama a
setAttributeMetadatacon el DID del sujeto, elattributeId, el tipo de emisor y la referencia a la acreditación padre. - Llama a
setAttributeDatacon el JWT codificado en hexadecimal. - Firma las transacciones resultantes con la clave del operador y las envía con
sendSignedTransaction.
Una vez procesadas las transacciones, la acreditación es accesible en:
<base-url-tir>/v1/issuers/<DID_SUJETO>/attributes/<ATTRIBUTE_ID>
Verificar que la acreditación está publicada
Comprueba que la acreditación es accesible mediante una llamada GET directa al TIR:
curl "https://tir.portal.redisbe.com/trusted-issuers-registry/v1/issuers/did:isbe:uc:<DID_SUJETO>/attributes/<ATTRIBUTE_ID>"
La respuesta debe incluir el JWT de la acreditación y el campo attribute.issuerType con el valor TI, TAO o RTAO.
Uso posterior de la URL de la acreditación
Una vez publicada, la URL del TIR de tu acreditación es la que deben usar:
- El CLI de acreditaciones de las entidades que acredites (como
--accreditedBy). - Cualquier verificador que necesite validar credenciales que tú emitas.