spliter.dev IAM Lab

OAuth 2.0 y OpenID Connect, paso a paso

Vas a hacer un inicio de sesión real contra un servidor de autorización de laboratorio. En cada paso verás la petición exacta, lo que responde el servidor y por qué. Y podrás romperlo a propósito para ver cómo se defiende.

Túel usuario
Lab SPAla aplicación (este navegador)
Servidor de autorización/as/* en este mismo dominio
  1. 1

    La aplicación prepara la petición

    Antes de mandarte a iniciar sesión, la aplicación genera tres valores aleatorios y los guarda: state (contra CSRF), nonce (contra reutilizar un id_token) y el code_verifier de PKCE. Al servidor solo le envía el hash del verifier: el code_challenge.

    Petición de autorización

    
          
    Rómpelo
  2. 2

    Vuelves con un código

    El servidor te redirige de vuelta con un code de un solo uso y el mismo state. La aplicación comprueba que el state es el que guardó: si no coincide, la respuesta no la ha iniciado ella y la descarta.

    
          
  3. 3

    Canjear el código por tokens

    La aplicación envía el código junto con el code_verifier original. El servidor calcula su SHA-256 y lo compara con el code_challenge del paso 1. Así, aunque alguien robara el código, no podría canjearlo.

    Petición

    
          
    Rómpelo

    Respuesta

    —
  4. 4

    Inspeccionar y validar los tokens

    Un JWT son tres partes en base64url: cabecera, datos y firma. Cualquiera puede leerlo; solo el servidor puede firmarlo. La aplicación valida el id_token con la clave pública del servidor (JWKS).

    
          

    Cabecera

    Datos (claims)

    Validación

      Rómpelo
    • 5

      Usar el access_token

      El access_token es la llave para llamar a APIs. El id_token solo sirve para que la aplicación sepa quién eres: no debe usarse para llamar a una API, y este servidor lo rechaza.

      —

    Lo que este laboratorio simplifica

    Configuración pública del servidor: /.well-known/openid-configuration · /as/jwks