OAuth 2.0 y autorización JWT en Java: guía 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 a OAuth 2.0 y JWT en Java

Las aplicaciones web y API modernas requieren mecanismos robustos de autenticación y autorización. Los dos estándares más populares en este ámbito son OAuth 2.0 y JWT (JSON Web Tokens). Si eres un desarrollador Java principiante, comprender estas tecnologías te abrirá el camino para crear aplicaciones seguras y escalables.

En este artículo, analizaremos qué son OAuth 2.0 y JWT, cómo funcionan juntos y cómo implementarlos en Java utilizando bibliotecas populares. Aprenderás a configurar un servidor de autorización, generar y verificar tokens JWT, así como proteger tus API REST.



¿Qué son OAuth 2.0 y JWT?



OAuth 2.0 — protocolo de acceso delegado

OAuth 2.0 es un protocolo de autorización que permite a las aplicaciones obtener acceso limitado a los recursos de un usuario sin transferir sus credenciales. Imagina que quieres darle a una aplicación acceso a tus fotos en Google. En lugar de proporcionar tu contraseña de Google a la aplicación, usas OAuth 2.0, que emite un token temporal con permisos limitados para la aplicación.

Participantes principales de OAuth 2.0:

  • Resource Owner — el usuario propietario de los recursos
  • Client — la aplicación que solicita acceso
  • Authorization Server — el servidor que emite los tokens
  • Resource Server — el servidor que proporciona los recursos protegidos


JWT — formato compacto de token

JWT (JSON Web Token) es un estándar abierto (RFC 7519) para crear tokens de acceso que contienen afirmaciones (claims) en formato JSON. JWT consta de tres partes separadas por puntos:

  • Header — contiene el tipo de token y el algoritmo de firma (por ejemplo, HS256 o RS256)
  • Payload — contiene las afirmaciones (por ejemplo, ID de usuario, roles, fecha de expiración)
  • Signature — firma que garantiza la integridad del token

Ejemplo de JWT: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U



Implementación de OAuth 2.0 y JWT en Java



Configuración del proyecto con Spring Security

Para implementar OAuth 2.0 y JWT en Java, utilizaremos Spring Boot y Spring Security. Comenzamos agregando las dependencias en el archivo pom.xml:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-security</artifactId></dependency><dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-api</artifactId>    <version>0.12.3</version></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-impl</artifactId>    <version>0.12.3</version>    <scope>runtime</scope></dependency><dependency>    <groupId>io.jsonwebtoken</groupId>    <artifactId>jjwt-jackson</artifactId>    <version>0.12.3</version>    <scope>runtime</scope></dependency>


Creación del proveedor JWT

Crearemos la clase JwtProvider, que se encargará de la generación y validación de tokens JWT:

import io.jsonwebtoken.*;import io.jsonwebtoken.security.Keys;import org.springframework.stereotype.Component;

import javax.crypto.SecretKey;import java.util.Date;

@Componentpublic class JwtProvider { private final SecretKey secretKey = Keys.secretKeyFor(SignatureAlgorithm.HS256); private final

Blogs

Book Recommendations