This project is a comprehensive example repository that demonstrates how to secure a Spring Boot application using Spring Security and JSON Web Tokens (JWT). It is built on Spring Boot 3.x and Java 21, and includes integrations such as Spring Security 6.x, JPA (via Hibernate) for persistence, and Redis for session/token management. The goal is to show how to migrate from stateful, session-based auth toward stateless, modern REST API authentication using JWTs, roles, and permission checks. The code covers typical flows like user registration, login, logout, refreshing or invalidating tokens, and endpoint authorization with annotations like @PreAuthorize. It’s cleaner and more up-to-date than many older tutorials, reflecting current Spring and Java versions and allowing direct experimentation by developers.
Features
- JWT-based authentication and authorization integrated with Spring Security
- Stateless REST API design with user registration, login, logout, and protected endpoints
- Role and permission model implemented via JPA many-to-many relationships
- Redis integration for tracking/invalidation of active tokens and sessions
- Uses Spring Boot 3.x, Java 21, Spring Security 6.x for modern stack
- Includes sample database (H2) and ready startup to explore authentication flows