OAuth 2.0 y autorización JWT en PHP: guía completa para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿por qué se necesitan OAuth 2.0 y JWT en las aplicaciones web modernas?



En el desarrollo web moderno, la transferencia segura de datos entre el cliente y el servidor es una de las tareas clave. Los métodos tradicionales de autenticación, como las sesiones basadas en cookies, funcionan bien para aplicaciones monolíticas, pero se vuelven incómodos al crear REST API, aplicaciones móviles o arquitectura de microservicios. Aquí es donde dos herramientas poderosas vienen al rescate: el protocolo OAuth 2.0 y el formato de tokens JWT (JSON Web Token).



En este artículo, analizaremos los conceptos básicos de OAuth 2.0 y JWT, y luego crearemos paso a paso un sistema de autorización simple en PHP. El artículo está dirigido a desarrolladores principiantes, por lo que todas las explicaciones serán lo más simples posible y estarán acompañadas de ejemplos prácticos de código.



¿Qué es OAuth 2.0 y cómo funciona?



OAuth 2.0 es un protocolo de autorización que permite a las aplicaciones obtener acceso limitado a los recursos del usuario sin transferir su nombre de usuario y contraseña. Imagina que quieres iniciar sesión en un sitio web a través de tu cuenta de Google o Facebook: eso es el funcionamiento de OAuth 2.0.



Roles principales en OAuth 2.0

  • Resource Owner (Propietario del recurso) — el usuario que posee los datos.
  • Client (Cliente) — la aplicación que desea acceder a los datos del usuario.
  • Authorization Server (Servidor de autorización) — el servidor que emite tokens después de una autenticación exitosa.
  • Resource Server (Servidor de recursos) — el servidor que almacena datos protegidos y verifica los tokens.


Flujo de autorización (Authorization Code Grant)

El flujo de OAuth 2.0 más común y seguro se ve así:

  1. El cliente redirige al usuario al servidor de autorización.
  2. El usuario inicia sesión y otorga permiso.
  3. El servidor de autorización devuelve al cliente un authorization code.
  4. El cliente intercambia el código por un access token (token de acceso).
  5. Con el access token, el cliente accede al servidor de recursos.


¿Qué es JWT y por qué es tan popular?



JWT (JSON Web Token) es un formato de token compacto y autónomo que se utiliza para transferir información entre partes en forma de objeto JSON. La información en JWT puede ser verificada y confiable, ya que el token está firmado con una firma digital.



Estructura de JWT

JWT consta de tres partes separadas por puntos:

header.payload.signature
  • Header (Encabezado) — contiene el tipo de token (JWT) y el algoritmo de firma (por ejemplo, HS256 o RS256).
  • Payload (Carga útil) — contiene los datos (claims), como el identificador del usuario, rol, tiempo de creación y expiración del token.
  • Signature (Firma) — se crea cifrando el encabezado y la carga útil utilizando una clave secreta.


Ventajas de JWT

  • Autonomía — toda la información necesaria se almacena dentro del token, lo que reduce la carga en la base de datos.
  • Seguridad — el token está firmado, por lo que no se puede falsificar.
  • Universalidad — funciona con cualquier lenguaje de programación y plataforma.
  • Escalabilidad — ideal para microservicios y sistemas distribuidos.


Implementación práctica: creando un sistema de autorización en PHP



Ahora pasemos a la parte más interesante: escribir código. Crearemos un script simple en PHP que genera un token JWT y lo verifica en cada solicitud. Para trabajar con JWT, usaremos la biblioteca firebase/php-jwt.



Blogs

Book Recommendations