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:
| Archivo | Extensión | Para qué sirve |
|---|---|---|
| SSA (Software Statement Assertion) | .jks | Se usa explícitamente en el payload de la API DCR para activar el software del cliente. |
| Claves públicas de los CSR | .jwks | JSON con el conjunto de claves públicas asociadas a los CSR. |
Cómo leer el.jwks
El claim
useindica a qué CSR pertenece cada clave:
use: tls→ CSR de network/transport
use: sig→ CSR de signing.La clave
use: tlsestablece el handshake mTLS con las APIs de Redeban.El
kidde la claveuse: siges 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:
| Claim | Descripción | Valor de ejemplo |
|---|---|---|
software_client_name | Nombre del cliente de software. | ABC PVT LTD |
software_client_id | Identificador único del cliente, asignado por el directorio. | SC-d06367ac-… |
iss | URL del directorio/entorno que emitió el SSA. | https://obdirectory.stage.redebanopenfinance.com |
org_type | Tipo de organización que registra al cliente. | Third Party Provider |
software_client_status | Estado del cliente (Active/Inactive/Revoked). | Active |
software_client_description | Descripción del cliente o su propósito. | ABC business |
consent_managedby_bank | Indica si el consentimiento lo gestiona el banco. | false |
software_id | Identificador único del software (suele coincidir con software_client_id). | SC-d06367ac-… |
software_client_uri | URI del cliente (página de inicio). | https://www.abctpp.com |
org_id | Identificador único de la organización. | OB-7e2af01d-… |
software_version | Versión del software del cliente | 1.0 |
software_environment | Entorno (Production, Sandbox, etc.). | Production |
software_roles | Roles del software:
| PISP |
exp | Caducidad del SSA (Unix epoch). | 1753443274 |
org_name | Nombre de la organización. | ABC Ltd |
iat | Emisión del SSA (Unix epoch). | 1750851274 |
jti | JWT ID único del SSA. | 8fdd5386-… |
software_redirect_uris | URL(s) de redirección suministradas por el participante | https://www.saucedemo.com |
logo_uri | URL del logotipo de la organización. | https://www.logopage.com/logoimage.jpg |
org_jwks_endpoint | Endpoint del JWKS de la organización para verificar firmas. | https://keystore.stage.redebanopenfinance.com/…/OB-7e2af01d-….jwks |
org_jwks_revoked_endpoint | Endpoint de JWKS revocados (claves en las que no se debe confiar). | https://keystore.stage.redebanopenfinance.com/…/revoked/OB-7e2af01d-….jwks |
id_token_signed_response_alg | Algoritmo (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
| Metadato | Descripción |
|---|---|
typ | Debe ser JWT. |
alg | Debe ser PS256. |
kid | Es 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
| Claim | Descripción | De dónde extraerlo | Especificación | Opcional |
|---|---|---|---|---|
iss | Emisor de la petición (TPP). | Nombre o razón social del participante. | RFC 7519 | NO |
iat | Fecha de la petición. | Unix epoch de la fecha y hora de la generación del token. | RFC 7519 | NO |
exp | Fecha de expiración. | Unix epoch de la fecha y hora de la expiración del token. Debe ser una fecha futura. | RFC 7519 | NO |
aud | Audiencia/destinatario (Redeban). | Su valor es siempre https://authlete.com para cualquier participante. | RFC 7519 | NO |
jti | JWT ID. | Identificador único del JWT | RFC 7519 | NO |
redirect_uris | URLs registradas que el participante usará con la plataforma. | software_redirect_uris del SSA. | OIDC-R | NO |
token_endpoint_auth_method | Método de autenticación del endpoint de token. | Su valor es siempre private_key_jwt para cualquier participante. | RFC 7591 | NO |
grant_types | Arreglo con los grant types solicitados al endpoint de token. |
| RFC 7591 | NO |
response_types | Arreglo con lo que se devuelve desde el endpoint de autorización del banco. | Su valor es siempre code para cualquier participante. | RFC 7591 | SÍ |
software_id | Identificador del software, en formato SC-<UUID>. Es el client_id del participante (TPP/Banco). | software_id del SSA. | RFC 7591 | SÍ |
scope | scope de OAuth. |
| RFC 7591 | NO |
software_statement | SSA emitido por el directorio en el onboarding. | SSA puro entregado por Redeban | RFC 7519 | NO |
application_type | Tipo de aplicación soportada | Su valor es siempre web para cualquier participante. | OIDC-R | NO |
request_object_signing_alg | Algoritmo para firmar el objeto de solicitud, si aplica. | Su valor es siempre PS256 para cualquier participante. | OIDC-R | SÍ |
token_endpoint_auth_signing_alg | Algoritmo de autenticación con el endpoint de token (private_key_jwt). | Su valor es siempre PS256 para cualquier participante. | SÍ | |
id_token_signed_response_alg | Algoritmo (p. ej. PS256) con que el servidor firma el id_token. | Su valor es siempre PS256 para cualquier participante. | SÍ |
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.