En este lab vamos a crear una aplicación Spring Boot con Spring Security y JWT. Aplicaremos los conceptos de autenticación y autorización que hemos aprendido en clase.
Crear una API REST segura con Spring Boot que implemente:
- Autenticación con JWT
- Autorización basada en roles
- Rutas públicas y protegidas
-
Fork de este repositorio y clona tu fork en tu máquina local.
-
Accede a Spring Initializr para crear la app con las dependencias que indica la lección.
-
Descarga el proyecto y descomprime todos los archivos directamente en la raíz del repositorio.
IMPORTANTE: NO deberán aparecer subcarpetas con el nombre de la app, sino que todos los ficheros deben estar en la raíz del repositorio.
-
Sigue la lección de hoy para implementar paso a paso:
- Modelo de usuario y roles
- Repositorios
- Servicio de autenticación y generación de tokens JWT
- Filtros de seguridad
- Controladores con diferentes niveles de acceso
-
Asegúrate de crear al menos:
- Una ruta pública que no requiera autenticación
- Una ruta para login que devuelva un token JWT
- Una ruta que requiera autenticación con cualquier rol
- Una ruta que requiera un rol específico (por ejemplo, ADMIN)
Realiza pruebas con Postman para verificar que la seguridad funciona correctamente. Debes adjuntar capturas de pantalla de las siguientes pruebas:
- Acceso exitoso a una ruta pública que no requiere autenticación.
- Solicitud de login exitosa que devuelve el token JWT.
- Intento de acceso a una ruta protegida sin token (debe devolver código 401).
- Acceso exitoso a la misma ruta protegida incluyendo el token JWT (debe devolver código 200).
- Intento de acceso a una ruta que requiere un rol específico sin tener dicho rol (debe devolver código 403).
- Asegúrate de que tu código está completo y funcional
- Incluye las capturas de pantalla en una carpeta
screenshots
en la raíz del repositorio - Haz commit y push de tus cambios a tu fork
- Crea un Pull Request a este repositorio original para que podamos revisar tu trabajo.
- Entrega el enlace a tu Pull Request en el portal.