Saltar al contenido principal

Publicar una acreditación

Publicar una acreditación en el TIR es un proceso en dos fases:

  1. Generar el JWT de la acreditación — usando el CLI de acreditaciones.
  2. Registrarlo en la blockchain — enviando las transacciones correspondientes al TIR a través de la API JSON-RPC.
El registro lo realiza un operador de ISBE

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 / --accreditedSchemas deben ser subconjunto de los autorizados por la TAO padre.

Parámetros del CLI

ParámetroDescripción
--subDID del sujeto de la acreditación (la entidad que recibirá el rol).
--domainDominio de la acreditación (p. ej. ISBE, ISBE-DEV).
--typeTipo: rtao, tao o ti.
--attribute64 caracteres hexadecimales aleatorios. Este valor es el reservedAttributeId y el attributeId en el TIR.
--accreditedForUno o varios tipos de VC que la acreditación habilita (separados por espacios).
--accreditedSchemasURLs de los schemas correspondientes a --accreditedFor (1:1).
--accreditedByURL del TIR de la acreditación padre. Para RTAO no se usa.
--expExpiració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:

  1. Llama a setAttributeMetadata con el DID del sujeto, el attributeId, el tipo de emisor y la referencia a la acreditación padre.
  2. Llama a setAttributeData con el JWT codificado en hexadecimal.
  3. 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.