Cuatro interceptors para la Sensedia API Platform que aplican, en el borde, lo que el perfil de seguridad del Sistema de Finanzas Abiertas exige antes de que una solicitud llegue a su servicio.
Cuando su institución publica una API regulada — Recursos, Cuentas, Tarjetas — el llamador es otro participante del SFA, y la norma exige comprobar varias cosas antes de servir el dato: que el certificado de transporte sea suyo, que el access token esté vinculado a ese certificado, que siga vigente, y que el consentimiento cubra exactamente la operación solicitada.
Los cuatro interceptors hacen esas comprobaciones en el gateway. Su servicio recibe la solicitud ya verificada, con el consentimiento resuelto en una cabecera.
En el gateway que publica su resource server — no en el del Authorization Server. Por eso ninguna dirección del Authorization Server se deriva de la solicitud ni del token: todas vienen de configuración.
El orden no es opcional: cada uno consume lo que el anterior dejó.
| Cabecera | La produce | La consume | Para qué |
|---|---|---|---|
x-client-cert-thumbprint |
1 — certificate-client-metadata | 2 — access-token-authorization | Vínculo holder-of-key entre token y certificado |
grantId |
2 — access-token-authorization | Su servicio | Identificador del consentimiento resuelto desde el token |
context-authorization-typecontext-required-actions |
3 — of-context-params | 4 — of-consent-validation | Qué type y qué actions exige el endpoint llamado |
x-consent-context |
4 — of-consent-validation | Su servicio | Contexto del consentimiento, si se habilita su propagación |
El primer interceptor necesita que el terminador mTLS entregue el certificado del cliente en la cabecera x-forwarded-client-cert (XFCC), con el elemento Cert en PEM. Sin eso, la cadena entera se detiene en el primer paso.
| # | Interceptor | Qué hace |
|---|---|---|
| 1 | certificate-client-metadata | Parsea el certificado mTLS, calcula el thumbprint SHA-256 y publica la identidad del participante. |
| 2 | access-token-authorization | Valida estructura, emisor, firma PS256, vigencia, authorization_details y el vínculo con el certificado. |
| 3 | of-context-params | Resuelve desde la ruta el type y las actions que el endpoint exige, y las inyecta. |
| 4 | of-consent-validation | Exige el type y las actions que el recurso requiere. |
Los cuatro responden con el mismo envoltorio y siempre devuelven x-fapi-interaction-id en la respuesta. Ramifique por code, nunca por el texto del mensaje.
code | Cuándo |
|---|---|
SFA_ERR_UNAUTHORIZED | Falta el certificado o el token, o no son válidos |
SFA_ERR_FORBIDDEN | El consentimiento no cubre la operación solicitada |
SFA_ERR_INVALID_GRANT | El consentimiento del token no es utilizable |
SFA_ERR_INTERNAL | Fallo no previsto en el borde |