Production-ready JWT authentication starter for Spring Boot.
Plug in the dependency, configure JWT properties, and instantly get:
- JWT token generation
- JWT validation
- Spring Security integration
- automatic authentication filter
- protected route handling
- zero boilerplate configuration
- Access token generation
- Refresh token generation
- Claims extraction
- Type-safe claim parsing
- Token validation
- Access & refresh token detection
- Automatic JWT authentication filter registration
- Automatic Spring Security configuration
- Bearer token authentication
- SecurityContext authentication support
- Route protection
- Public route exclusion support
- Fully auto-configured
- Minimal setup
- Java 21 compatible
- Spring Boot 4.x.x compatible
- Zero manual bean registration
- Plug-and-play architecture
<repositories>
<repository>
<id>github</id>
<url>
https://maven.pkg.github.com/smitroy4/jwt-spring-boot-starter
</url>
</repository>
</repositories><dependency>
<groupId>com.smit</groupId>
<artifactId>
jwt-spring-boot-starter
</artifactId>
<version>1.0.2</version>
</dependency>jwt:
secret-key: mysupersecretkeymysupersecretkey123456
access-token-expiration: 600000
refresh-token-expiration: 604800000@RestController
@RequiredArgsConstructor
public class AuthController {
private final JwtService jwtService;
@GetMapping("/auth/token")
public String token() {
return jwtService.generateAccessToken(
"101",
Map.of(
"email",
"[email protected]",
"role",
"ADMIN"
)
);
}
}@RestController
public class UserController {
@GetMapping("/user")
public String user(
Authentication authentication
) {
return "Authenticated User: "
+ authentication.getName();
}
}GET /auth/tokenResponse:
eyJhbGciOiJIUzI1NiJ9...
GET /user
Authorization: Bearer YOUR_TOKENResponse:
Authenticated User: 101
Incoming Request
↓
JwtAuthenticationFilter
↓
Extract Bearer Token
↓
Validate JWT
↓
Extract Subject & Claims
↓
SecurityContext Authentication
↓
Protected Controller Access
application.yml
↓
JwtConfigurationProperties
↓
JwtAutoConfiguration
↓
JwtSecurityConfiguration
↓
JwtAuthenticationFilter
↓
JwtService
- JwtService
- JwtAuthenticationFilter
- SecurityFilterChain
- JwtConfigurationProperties
The starter is fully extensible.
Applications can override:
- JwtService
- JwtAuthenticationFilter
- SecurityFilterChain
simply by defining custom beans.
Example:
@Bean
public JwtService jwtService() {
return new CustomJwtService();
}The starter automatically backs off using:
@ConditionalOnMissingBeanjwt-spring-boot-starter
│
├── config
│ ├── JwtAutoConfiguration
│ └── JwtSecurityConfiguration
│
├── properties
│ └── JwtConfigurationProperties
│
├── security
│ └── JwtAuthenticationFilter
│
└── META-INF/spring
└── AutoConfiguration.imports
| Layer | Technology |
|---|---|
| Language | Java 21 |
| Framework | Spring Boot 4.x.x |
| Security | Spring Security |
| JWT | JJWT |
| Build Tool | Maven |
| Distribution | GitHub Packages |
| CI/CD | GitHub Actions |
- JWT Bearer Authentication
- Stateless Authentication
- Automatic Request Filtering
- SecurityContext Integration
- Public & Protected Route Handling
- Dynamic excluded routes
- Role-based authorization
- Authorities extraction
- Redis token blacklist
- Refresh token workflow
- RSA key support
- Swagger/OpenAPI integration
- OAuth2 support
- Custom JWT annotations
- Multi-tenant JWT support
Contributions, feature ideas, and pull requests are welcome.
Feel free to open issues for:
- bug reports
- feature requests
- improvements
- integrations
MIT License
GitHub: https://github.com/smitroy4