The main purpose of this project is to implement various user authentication methods using Spring Security, including:
- 🔑 Username/password authentication with encryption using
PasswordEncoder
. - 🕒 Session management to handle user state persistence.
- 🌐 OpenID (OAuth 2.0) authentication as a client for external authentication.
- 🔐 Passkey (FIDO2/WebAuthn) authentication for enhanced security.
- 🎟️ One-Time Token authentication for temporary and secure access.
- 🧠 "Remember Me" functionality to improve user experience.
- 🧪 Unit and integration testing to ensure code quality, using the H2 in-memory database.
- 🎨 Dynamic templates built with Thymeleaf.
- 📢 Validation messages and notifications for actions such as user logout, user creation, and more.
- Spring Security 🛡️
- Thymeleaf 🍃
- H2 Database 🗃️
- OAuth 2.0 🌐
- FIDO2/WebAuthn 🔐
- JUnit 🧪
- HTML/CSS/JS 🎨
- Spring Boot 🚀
- Spring Data JPA 📦
- WebAuthn4J 🔑
- Lombok ⚙️
- Spring MVC 🌍
- Thymeleaf Extras 🍂
- Spring Testing 🧪
- Spring Actuator 📊
- Spring DevTools 🔧
src/ ├── main/ │ ├── java/ │ │ └── com/authentication/borghi/ │ │ ├── controller/ # Controllers for handling requests │ │ ├── dto/ # Data Transfer Objects (DTOs) │ │ ├── entity/ # JPA entities │ │ │ ├── onetimeToken/ # One-Time Token related entities │ │ │ └── user/ # User-related entities │ │ ├── exceptions/ # Custom exceptions │ │ ├── filter/ # Custom filters │ │ ├── repository/ # Data access repositories │ │ ├── security/ # Security configurations and handlers │ │ │ └── handler/ # Custom security handlers │ │ ├── service/ # Business logic and services │ │ │ ├── email/ # Email-related services │ │ │ ├── onetimeToken/ # One-Time Token services │ │ │ └── user/ # User-related services │ │ └── strategy/ # Authentication strategies │ │ └── admin/ # Admin-related strategies │ ├── resources/ # Static resources and templates │ │ ├── static/ # Static files (CSS, JS, etc.) │ │ │ ├── css/ # CSS files │ │ │ └── js/ # JavaScript files │ │ ├── templates/ # Thymeleaf templates │ │ └── application.properties # Main configuration file │ └── test/ # Tests │ ├── java/ # Test source code │ │ └── com/authentication/borghi/ │ │ ├── constants/ # Test constants │ │ ├── controller/ # Controller tests │ │ ├── integration/ # Integration tests │ │ ├── repository/ # Repository tests │ │ ├── security/ # Security tests │ │ └── service/ # Service tests │ └── resources/ # Test resources │ └── application-test.properties # Test configuration file └── BorginApplication.java # Main application class