Skip to content

Spring Boot 3 / Java 21 – BluePrints API Part 2 with JWT OAuth2 security, protected endpoints, and Swagger integration.

License

Notifications You must be signed in to change notification settings

DECSIS-ECI/Lab_P2_BluePrints_Java21_API_Security_JWT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Escuela Colombiana de Ingeniería Julio Garavito

Arquitectura de Software – ARSW

Laboratorio – Parte 2: BluePrints API con Seguridad JWT (OAuth 2.0)

Este laboratorio extiende la Parte 1 (Lab_P1_BluePrints_Java21_API) agregando seguridad a la API usando Spring Boot 3, Java 21 y JWT (OAuth 2.0).
El API se convierte en un Resource Server protegido por tokens Bearer firmados con RS256.
Incluye un endpoint didáctico /auth/login que emite el token para facilitar las pruebas.


Objetivos

  • Implementar seguridad en servicios REST usando OAuth2 Resource Server.
  • Configurar emisión y validación de JWT.
  • Proteger endpoints con roles y scopes (blueprints.read, blueprints.write).
  • Integrar la documentación de seguridad en Swagger/OpenAPI.

Requisitos

  • JDK 21
  • Maven 3.9+
  • Git

Ejecución del proyecto

  1. Clonar o descomprimir el proyecto:

    git clone https://github.com/DECSIS-ECI/Lab_P2_BluePrints_Java21_API_Security_JWT.git
    cd Lab_P2_BluePrints_Java21_API_Security_JWT

    ó si el profesor entrega el .zip, descomprimirlo y entrar en la carpeta.

  2. Ejecutar con Maven:

    mvn -q -DskipTests spring-boot:run
  3. Verificar que la aplicación levante en http://localhost:8080.


Endpoints principales

1. Login (emite token)

POST http://localhost:8080/auth/login
Content-Type: application/json

{
  "username": "student",
  "password": "student123"
}

Respuesta:

{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600
}

2. Consultar blueprints (requiere scope blueprints.read)

GET http://localhost:8080/api/blueprints
Authorization: Bearer <ACCESS_TOKEN>

3. Crear blueprint (requiere scope blueprints.write)

POST http://localhost:8080/api/blueprints
Authorization: Bearer <ACCESS_TOKEN>
Content-Type: application/json

{
  "name": "Nuevo Plano"
}

Swagger UI


Estructura del proyecto

src/main/java/co/edu/eci/blueprints/
  ├── api/BlueprintController.java       # Endpoints protegidos
  ├── auth/AuthController.java           # Login didáctico para emitir tokens
  ├── config/OpenApiConfig.java          # Configuración Swagger + JWT
  └── security/
       ├── SecurityConfig.java
       ├── MethodSecurityConfig.java
       ├── JwtKeyProvider.java
       ├── InMemoryUserService.java
       └── RsaKeyProperties.java
src/main/resources/
  └── application.yml

Actividades propuestas

  1. Revisar el código de configuración de seguridad (SecurityConfig) e identificar cómo se definen los endpoints públicos y protegidos.
  2. Explorar el flujo de login y analizar las claims del JWT emitido.
  3. Extender los scopes (blueprints.read, blueprints.write) para controlar otros endpoints de la API, del laboratorio P1 trabajado.
  4. Modificar el tiempo de expiración del token y observar el efecto.
  5. Documentar en Swagger los endpoints de autenticación y de negocio.

Lecturas recomendadas


Licencia

Proyecto educativo con fines académicos – Escuela Colombiana de Ingeniería Julio Garavito.

About

Spring Boot 3 / Java 21 – BluePrints API Part 2 with JWT OAuth2 security, protected endpoints, and Swagger integration.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published