POST /api/v3/oauth/exchange
Implementa un intercambio de tokens simplificado al estilo RFC 8693.
string
requerido
El token OIDC emitido por el IdP para el usuario (id_token o access_token).
string
Aceptado por paridad con RFC 8693; no se exige.
string
Aceptado por paridad con RFC 8693; no se exige.
Qué hace el endpoint
1
Verifica el subject token
Firma ES256 contra JWKS, más
iss, aud, exp. Rechaza tokens expirados o
inválidos con 401.2
Verifica la blacklist
Si el
jti del token está en la blacklist, rechaza con 401.3
Resuelve usuario y cliente
user_id desde sub, el cliente desde el claim https://bbrands.io/client_handle.
Un claim faltante devuelve 401.4
Valida la habilitación
El acceso usuario × plataforma debe estar activo y el cliente debe estar activo.
De lo contrario
403.5
Resuelve la cuenta primaria y acuña el JWT
Acuña el JWT interno HS256 con
user_id, account_id,
token_use: "exchange", el handle del cliente y un jti, con un TTL corto
(por defecto 900s, configurable). Registra la emisión con
grant_type = token_exchange.Errores
Uso del token intercambiado
El cliente usa eltoken devuelto como Authorization: Bearer ... contra las
APIs de B Brands. El autorizador interno existente valida el JWT HS256 y
resuelve los permisos propios del usuario (RBAC interno). El Resource Server no
cambia.
Notas de seguridad
- El TTL corto es obligatorio (por defecto 900s). Nunca emitas el token de login tradicional de larga duración a través de este flujo.
- El token es revocable vía la blacklist por
jti. Tanto este endpoint como el autorizador interno rechazan los tokens en blacklist. - No hay refresh para el token interno por diseño. Cuando expira, el cliente vuelve a ejecutar el exchange con un token OIDC aún válido.