Skip to main content
Referencia para las revisiones de seguridad y las conversaciones con el equipo de Seguridad. Como siempre: el IdP autentica, no autoriza aplicaciones.

1. Modelo de tokens

Distinción clave: los tokens ES256 demuestran identidad y son consumidos por la app cliente — nunca llegan a las APIs de B Brands. El token HS256 es consumido por las APIs de B Brands vía el autorizador interno existente.

Claims canónicos del token de acceso OAuth (identidad + dimensión de cuenta)

Reglas inviolables: iss es siempre la URL auth.* por entorno; aud es siempre la audiencia fija del IdP bbrands-idp; el cliente solicitante se transporta en https://bbrands.io/client_handle; jti está siempre presente e impulsa la blacklist; no hay claim de permisos ni de rol. El claim https://bbrands.io/profile lleva solo contexto de tenancy: account es la cuenta vinculada al usuario estrictamente mediante el rol primary_user (un usuario primario por cuenta), odoo es el id del sistema externo de esa cuenta (null hasta que la API de migración la mapee) y user es igual a sub. El endpoint UserInfo devuelve el mismo objeto.

Validación del lado del cliente

2. Dónde vive la autorización

El JWT de exchange otorga al cliente los permisos completos del usuario en B Brands (sin least-privilege por cliente). Aceptable para clientes first-party confiables; introduce la acotación en el exchange si necesitas reducirlos.

3. Gestión de secretos

Reglas de almacenamiento: nunca en el repositorio, nunca en los logs (enmascara los headers Authorization), nunca en los payloads de webhook, cifrado en reposo, acceso restringido a los administradores del IdP.

Rotación de client_secret

1

El administrador hace clic en Rotar

B Brands genera un nuevo secreto.
2

Período de gracia

El antiguo y el nuevo se aceptan simultáneamente durante una ventana de gracia configurable (por defecto 24h).
3

El cliente actualiza su config

En cualquier momento durante la ventana de gracia.
4

Termina la gracia

El secreto antiguo deja de aceptarse; la auditoría registra la rotación.

Rotación de la clave de firma ES256

El motor soporta rotación basada en kid. Genera la nueva clave, mantén ambas activas, espera el TTL máximo del token de acceso (30 min) + buffer (1h), retira la clave antigua, luego elimínala tras la retención. El endpoint JWKS debe exponer ambas durante la ventana.

4. Modelo de amenazas (mini-STRIDE)

5. Niveles de revocación

6. Requisitos de auditoría

  • Inmutable: append-only, sin UPDATE/DELETE.
  • Trazable: actor, ip, user_agent, correlation_id.
  • Retención: 12 meses en línea, más tiempo en almacenamiento en frío.
  • Exportable: /idp/audit/users/:id/export para GDPR/compliance.
  • Nunca registrado: tokens completos (solo el prefijo del jti), secretos en texto plano, contraseñas.

7. Defensa en profundidad