Skip to content

Flujo del Código de Autorización

El flujo descrito en esta documentación se refiere al Authorization Code Flow, descrito en la documentación oficial de OpenID Connect.

Visión General

El flujo de código de autorización retorna un Authorization Code al cliente, que podrá intercambiarlo por un id_token y un access_token directamente. Este flujo posee el beneficio de no exponer ningún token al user_agent (navegador del usuario) y posiblemente a malware con acceso al user_agent.

Diagrama del Flujo

┌─────────┐                                          ┌──────────────────┐
│ Cliente │                                          │ Proveedor de     │
│ (App)   │                                          │ Identidad (IdP)  │
└────┬────┘                                          └──────┬───────────┘
     │                                                       │
     │ 1. Redirige a /authorize                             │
     │    con client_id, redirect_uri, scope                │
     ├──────────────────────────────────────────────────────>│
     │                                                       │
     │                                                       │ 2. Usuario hace login
     │                                                       │<──────────────────┐
     │                                                       │                  │
     │                                                       │ 3. Autenticación  │
     │                                                       │    exitosa       │
     │                                                       │──────────────────>│
     │                                                       │                  │
     │ 4. Redirige a redirect_uri                            │                  │
     │    con código de autorización                        │                  │
     │<──────────────────────────────────────────────────────┤                  │
     │                                                       │                  │
     │ 5. POST /api/token/v2                                │                  │
     │    con code, client_id, client_secret                 │                  │
     ├──────────────────────────────────────────────────────>│                  │
     │                                                       │                  │
     │ 6. Retorna id_token y access_token                  │                  │
     │<──────────────────────────────────────────────────────┤                  │
     │                                                       │                  │
     │ 7. Valida id_token                                   │                  │
     │    (iss, aud, exp, signature)                        │                  │
     │                                                       │                  │
     │ 8. Usa tokens para acceder a recursos                │                  │
     │                                                       │                  │

Pasos Detallados

  1. Solicitud de Autorización: Cliente redirige usuario al endpoint /authorize con parámetros requeridos
  2. Autenticación del Usuario: Usuario hace login con credenciales
  3. Concesión de Autorización: Sistema valida usuario y genera código de autorización
  4. Redirección con Código: Usuario es redirigido de vuelta a redirect_uri con código de autorización
  5. Intercambio de Token: Cliente intercambia código de autorización por tokens vía POST a /api/token/v2
  6. Respuesta de Token: Sistema retorna id_token y access_token
  7. Validación de Token: Cliente valida el id_token (emisor, audiencia, expiración, firma)
  8. Acceso a Recursos: Cliente usa tokens para acceder a recursos protegidos

Beneficios de Seguridad

  • Los tokens nunca se exponen al navegador
  • El código de autorización es de un solo uso y de corta duración
  • El intercambio de tokens servidor-para-servidor asegura la seguridad
  • La validación de tokens previene la manipulación

Documentación de la API Fanbase