Introducción Dynamic Client Registration API

📘

Audiencia: TPP y Bancos ·
Propósito: activar el software del participante en la plataforma para consumir las APIs de iniciación de pagos.

La API de Dynamic Client Registration (DCR) define el mecanismo automatizado que permite a un participante (TPP o banco) registrar su software en la plataforma de APIs de Redeban y activarlo en el ambiente.

Qué se recibe en el onboarding

En el Directorio de Participantes de Redeban, cada participante se registra con:

  • Datos básicos: razón social, número de registro de la compañía, dirección.
  • Contacto técnico y de negocio: nombres, correos y teléfonos.
  • Solicitudes de firma de certificados (CSR): 2 CSR — uno de firma y uno de transporte.
  • URL(s) de redirección: máximo 4 para el TPP y máximo 1 para la Entidad.

Tras el registro, el participante recibe dos archivos:

ArchivoExtensiónPara qué sirve
SSA (Software Statement Assertion).jksSe usa explícitamente en el payload de la API DCR para activar el software del cliente.
Claves públicas de los CSR.jwksJSON con el conjunto de claves públicas asociadas a los CSR.
📘

Cómo leer el .jwks

  • El claim use indica a qué CSR pertenece cada clave:

    use: tls → CSR de network/transport
    use: sig → CSR de signing.

  • La clave use: tls establece el handshake mTLS con las APIs de Redeban.

  • El kid de la clave use: sig es obligatorio en el header de todos los JWT requeridos al consumir las APIs (incluida la de DCR).

La respuesta exitosa de la API DCR devuelve un Client ID que se usa en todos los endpoints de autenticación junto con el método private_key_jwt.

Sobre el SSA

El SSA es un JWT que encapsula los metadatos de una instancia de software del participante. Provee información confiable y verificable sobre la identidad y capacidades del software cliente como parte del registro en el ecosistema de Open Banking.

El SSA es emitido y firmado digitalmente por el Directorio de Participantes de Redeban, garantizando autenticidad e integridad.

El payload del SSA es una declaración de software conforme a RFC 7591, representada como un JWT conforme a RFC 7519.

Claims del SSA

A continuación una tabla explicativa con la información que contiene el SSA, una vez decodificado:

ClaimDescripciónValor de ejemplo
software_client_nameNombre del cliente de software.ABC PVT LTD
software_client_idIdentificador único del cliente, asignado por el directorio.SC-d06367ac-…
issURL del directorio/entorno que emitió el SSA.https://obdirectory.stage.redebanopenfinance.com
org_typeTipo de organización que registra al cliente.Third Party Provider
software_client_statusEstado del cliente (Active/Inactive/Revoked).Active
software_client_descriptionDescripción del cliente o su propósito.ABC business
consent_managedby_bankIndica si el consentimiento lo gestiona el banco.false
software_idIdentificador único del software (suele coincidir con software_client_id).SC-d06367ac-…
software_client_uriURI del cliente (página de inicio).https://www.abctpp.com
org_idIdentificador único de la organización.OB-7e2af01d-…
software_versionVersión del software del cliente1.0
software_environmentEntorno (Production, Sandbox, etc.).Production
software_rolesRoles del software:
  • PISP
  • ASPSP
PISP
expCaducidad del SSA (Unix epoch).1753443274
org_nameNombre de la organización.ABC Ltd
iatEmisión del SSA (Unix epoch).1750851274
jtiJWT ID único del SSA.8fdd5386-…
software_redirect_urisURL(s) de redirección suministradas por el participantehttps://www.saucedemo.com
logo_uriURL del logotipo de la organización.https://www.logopage.com/logoimage.jpg
org_jwks_endpointEndpoint del JWKS de la organización para verificar firmas.https://keystore.stage.redebanopenfinance.com/…/OB-7e2af01d-….jwks
org_jwks_revoked_endpointEndpoint de JWKS revocados (claves en las que no se debe confiar).https://keystore.stage.redebanopenfinance.com/…/revoked/OB-7e2af01d-….jwks
id_token_signed_response_algAlgoritmo (PS256) con que el servidor firma el id_token.PS256

Ejemplo de SSA

eyJraWQiOiJLTnpMVWg1LUNVSUdxUlpvdUd5WXJ2bVFVczgiLCJ0eXAiOiJKV1QiLCJhbGciOiJQUzI1NiJ9…‹truncado›

Header

{
  "kid": "KNzLUh5-CUIGqRZouGyYrvmQUs8",
  "typ": "JWT",
  "alg": "PS256"
}

Payload del SSA

{
  "org_jwks_endpoint": "https://keystore.stage.redebanopenfinance.com/keystore/production/OB-7e2af01d-3626-4d7b-8e3d-c6cd2054c7be/OB-7e2af01d-3626-4d7b-8e3d-c6cd2054c7be.jwks",
  "software_redirect_uris": ["https://www.saucedemo.com"],
  "software_client_name": "TPP CRL Validation",
  "software_client_id": "SC-d06367ac-707b-40ba-b6a7-e8f9046bbfd1",
  "logo_uri": "https://obdirectory.stage.redebanopenfinance.com/logo/OB-7e2af01d-3626-4d7b-8e3d-c6cd2054c7be.svg",
  "iss": "https://obdirectory.stage.redebanopenfinance.com",
  "org_type": "Third Party Provider",
  "software_client_status": "Active",
  "software_client_description": "TPP CRL Validation Test in Pre Prod Env",
  "consent_managedby_bank": false,
  "software_id": "SC-d06367ac-707b-40ba-b6a7-e8f9046bbfd1",
  "software_client_uri": "https://www.tppPPCRL.com",
  "org_id": "OB-7e2af01d-3626-4d7b-8e3d-c6cd2054c7be",
  "software_version": "1.0",
  "software_environment": "Production",
  "software_roles": ["PISP"],
  "exp": 1753443274,
  "org_name": "CRL Validation PP",
  "iat": 1750851274,
  "org_jwks_revoked_endpoint": "https://keystore.stage.redebanopenfinance.com/keystore/OB-7e2af01d-3626-4d7b-8e3d-c6cd2054c7be/revoked/OB-7e2af01d-3626-4d7b-8e3d-c6cd2054c7be.jwks",
  "jti": "8fdd5386-10b6-453e-8c56-3cd4cea119c1"
}

Construcción del JWT para realizar solicitud de activación (DCR)

Para registrarse, el participante envía un POST al endpoint de registro. La solicitud debe estructurarse como un JWT (RFC 7519) con tipo de contenido application/jose, firmado con uno de los algoritmos permitidos por Open Banking.

Claims del header

MetadatoDescripción
typDebe ser JWT.
algDebe ser PS256.
kidEs el mismo kid que se encuentra en la clave pública asociada al CSR de firma (use: sig ) en el .jwks provisto por Redeban

Claims del payload

ClaimDescripciónDe dónde extraerloEspecificaciónOpcional
issEmisor de la petición (TPP).Nombre o razón social del participante.RFC 7519NO
iatFecha de la petición.Unix epoch de la fecha y hora de la generación del token.RFC 7519NO
expFecha de expiración.Unix epoch de la fecha y hora de la expiración del token. Debe ser una fecha futura.RFC 7519NO
audAudiencia/destinatario (Redeban).Su valor es siempre https://authlete.com para cualquier participante.RFC 7519NO
jtiJWT ID.Identificador único del JWTRFC 7519NO
redirect_urisURLs registradas que el participante usará con la plataforma.software_redirect_uris del SSA.OIDC-RNO
token_endpoint_auth_methodMétodo de autenticación del endpoint de token.Su valor es siempre private_key_jwt para cualquier participante.RFC 7591NO
grant_typesArreglo con los grant types solicitados al endpoint de token.
  • client_credentials y authorization_codepara TPPs

  • authorization_code para bancos

RFC 7591NO
response_typesArreglo con lo que se devuelve desde el endpoint de autorización del banco.Su valor es siempre code para cualquier participante.RFC 7591
software_idIdentificador del software, en formato SC-<UUID>. Es el client_id del participante (TPP/Banco).software_id del SSA.RFC 7591
scopescope de OAuth.
  • paymentspara TPPs
  • bank para bancos
RFC 7591NO
software_statementSSA emitido por el directorio en el onboarding.SSA puro entregado por RedebanRFC 7519NO
application_typeTipo de aplicación soportadaSu valor es siempre web para cualquier participante.OIDC-RNO
request_object_signing_algAlgoritmo para firmar el objeto de solicitud, si aplica.Su valor es siempre PS256 para cualquier participante.OIDC-R
token_endpoint_auth_signing_algAlgoritmo de autenticación con el endpoint de token (private_key_jwt).Su valor es siempre PS256 para cualquier participante.
id_token_signed_response_algAlgoritmo (p. ej. PS256) con que el servidor firma el id_token.Su valor es siempre PS256 para cualquier participante.

Ejemplo del payload

Header

{
  "alg": "PS256",
  "typ": "JWT",
  "kid": "Nb08iZVz6FmdRiTsR2ZruXG07IU="
}

Payload

{
  "iss": "Redeban",
  "iat": 1549357843,
  "exp": 1758896825,
  "aud": "https://authlete.com",
  "jti": "cd73a7834554407f",
  "redirect_uris": ["https://www.saucedemo.com"],
  "token_endpoint_auth_method": "private_key_jwt",
  "token_endpoint_auth_signing_alg": "PS256",
  "grant_types": ["client_credentials", "authorization_code"],
  "response_types": ["code"],
  "software_id": "SC-9c7527d4-6eb9-4f11-be81-4b8af33097d6",
  "scope": "payments",
  "software_statement": "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IktOekxVaDU…‹truncado›",
  "application_type": "web",
  "id_token_signed_response_alg": "PS256",
  "request_object_signing_alg": "PS256"
}

Solicitud (cURL)

curl --location 'https://api.snd.redebanopenfinance.com/register/v1' \
--header 'Content-Type: application/jose' \
--data 'eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5iMDhpWlZ6…‹truncado›'

Respuesta

{
  "client_id": "3880630845",
  "redirect_uris": [
    "https://www.saucedemo.com"
  ],
  "token_endpoint_auth_method": "private_key_jwt",
  "grant_types": [
    "authorization_code",
    "client_credentials"
  ],
  "response_types": [
    "code"
  ],
  "software_id": "SC-9c7527d4-6eb9-4f11-be81-4b8af33097d6",
  "scope": "payments",
  "software_statement": "eyJhbGciOiJQUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IktOekxVaDU…‹truncado›",
  "application_type": "web",
  "id_token_signed_response_alg": "PS256"
}
📘

¿Generar los JWT a mano es complejo? El utilitario PPS genera la firma del registro DCR a partir del SSA y los certificados del participante.


© Redeban. Todos los derechos reservados