{"id":50398408,"url":"https://github.com/smitroy4/jwt-spring-boot-starter","last_synced_at":"2026-05-30T22:01:13.572Z","repository":{"id":359631421,"uuid":"1246820749","full_name":"smitroy4/jwt-spring-boot-starter","owner":"smitroy4","description":"Auto-configured JWT starter for Spring Boot applications.","archived":false,"fork":false,"pushed_at":"2026-05-22T18:33:27.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T21:33:23.956Z","etag":null,"topics":["authentication","backend","java","jwt","maven","opensource","security","spring-boot","starter"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smitroy4.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-22T15:35:59.000Z","updated_at":"2026-05-22T18:34:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/smitroy4/jwt-spring-boot-starter","commit_stats":null,"previous_names":["smitroy4/jwt-spring-boot-starter"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/smitroy4/jwt-spring-boot-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitroy4%2Fjwt-spring-boot-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitroy4%2Fjwt-spring-boot-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitroy4%2Fjwt-spring-boot-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitroy4%2Fjwt-spring-boot-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smitroy4","download_url":"https://codeload.github.com/smitroy4/jwt-spring-boot-starter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smitroy4%2Fjwt-spring-boot-starter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33711018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","backend","java","jwt","maven","opensource","security","spring-boot","starter"],"created_at":"2026-05-30T22:01:12.761Z","updated_at":"2026-05-30T22:01:13.560Z","avatar_url":"https://github.com/smitroy4.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Java](https://img.shields.io/badge/Java-21-blue)\n![Spring Boot](https://img.shields.io/badge/SpringBoot-4-green)\n![Spring Security](https://img.shields.io/badge/SpringSecurity-Integrated-success)\n![Maven](https://img.shields.io/badge/Maven-Published-orange)\n![CI](https://img.shields.io/github/actions/workflow/status/smitroy4/jwt-spring-boot-starter/maven.yml)\n![License](https://img.shields.io/badge/License-MIT-yellow)\n\n# jwt-spring-boot-starter\n\nProduction-ready JWT authentication starter for Spring Boot.\n\nPlug in the dependency, configure JWT properties, and instantly get:\n\n* JWT token generation\n* JWT validation\n* Spring Security integration\n* automatic authentication filter\n* protected route handling\n* zero boilerplate configuration\n\n---\n\n# Features\n\n## JWT Core Features\n\n* Access token generation\n* Refresh token generation\n* Claims extraction\n* Type-safe claim parsing\n* Token validation\n* Access \u0026 refresh token detection\n\n---\n\n## Spring Security Integration\n\n* Automatic JWT authentication filter registration\n* Automatic Spring Security configuration\n* Bearer token authentication\n* SecurityContext authentication support\n* Route protection\n* Public route exclusion support\n\n---\n\n## Developer Experience\n\n* Fully auto-configured\n* Minimal setup\n* Java 21 compatible\n* Spring Boot 4.x.x compatible\n* Zero manual bean registration\n* Plug-and-play architecture\n\n---\n\n# Installation\n\n## 1. Add GitHub Packages Repository\n\n```xml\n\u003crepositories\u003e\n\n    \u003crepository\u003e\n\n        \u003cid\u003egithub\u003c/id\u003e\n\n        \u003curl\u003e\n            https://maven.pkg.github.com/smitroy4/jwt-spring-boot-starter\n        \u003c/url\u003e\n\n    \u003c/repository\u003e\n\n\u003c/repositories\u003e\n```\n\n---\n\n## 2. Add Dependency\n\n```xml\n\u003cdependency\u003e\n\n    \u003cgroupId\u003ecom.smit\u003c/groupId\u003e\n\n    \u003cartifactId\u003e\n        jwt-spring-boot-starter\n    \u003c/artifactId\u003e\n\n    \u003cversion\u003e1.0.2\u003c/version\u003e\n\n\u003c/dependency\u003e\n```\n\n---\n\n# Configuration\n\n## application.yml\n\n```yaml\njwt:\n  secret-key: mysupersecretkeymysupersecretkey123456\n  access-token-expiration: 600000\n  refresh-token-expiration: 604800000\n```\n\n---\n\n# Quick Start\n\n## Generate Token\n\n```java\n@RestController\n@RequiredArgsConstructor\npublic class AuthController {\n\n    private final JwtService jwtService;\n\n    @GetMapping(\"/auth/token\")\n    public String token() {\n\n        return jwtService.generateAccessToken(\n                \"101\",\n                Map.of(\n                        \"email\",\n                        \"admin@test.com\",\n                        \"role\",\n                        \"ADMIN\"\n                )\n        );\n    }\n}\n```\n\n---\n\n# Protected Route Example\n\n```java\n@RestController\npublic class UserController {\n\n    @GetMapping(\"/user\")\n    public String user(\n            Authentication authentication\n    ) {\n\n        return \"Authenticated User: \"\n                + authentication.getName();\n    }\n}\n```\n\n---\n\n# Authentication Flow\n\n## Step 1 — Generate Token\n\n```http\nGET /auth/token\n```\n\nResponse:\n\n```text\neyJhbGciOiJIUzI1NiJ9...\n```\n\n---\n\n## Step 2 — Access Protected Endpoint\n\n```http\nGET /user\nAuthorization: Bearer YOUR_TOKEN\n```\n\nResponse:\n\n```text\nAuthenticated User: 101\n```\n\n---\n\n# How It Works\n\n```text\nIncoming Request\n        ↓\nJwtAuthenticationFilter\n        ↓\nExtract Bearer Token\n        ↓\nValidate JWT\n        ↓\nExtract Subject \u0026 Claims\n        ↓\nSecurityContext Authentication\n        ↓\nProtected Controller Access\n```\n\n---\n\n# Auto Configuration Architecture\n\n```text\napplication.yml\n        ↓\nJwtConfigurationProperties\n        ↓\nJwtAutoConfiguration\n        ↓\nJwtSecurityConfiguration\n        ↓\nJwtAuthenticationFilter\n        ↓\nJwtService\n```\n\n---\n\n# Included Components\n\n## Auto-Configured Beans\n\n* JwtService\n* JwtAuthenticationFilter\n* SecurityFilterChain\n* JwtConfigurationProperties\n\n---\n\n# Overriding Starter Components\n\nThe starter is fully extensible.\n\nApplications can override:\n\n* JwtService\n* JwtAuthenticationFilter\n* SecurityFilterChain\n\nsimply by defining custom beans.\n\nExample:\n\n```java\n@Bean\npublic JwtService jwtService() {\n\n    return new CustomJwtService();\n}\n```\n\nThe starter automatically backs off using:\n\n```java\n@ConditionalOnMissingBean\n```\n\n---\n\n# Project Structure\n\n```text\njwt-spring-boot-starter\n│\n├── config\n│   ├── JwtAutoConfiguration\n│   └── JwtSecurityConfiguration\n│\n├── properties\n│   └── JwtConfigurationProperties\n│\n├── security\n│   └── JwtAuthenticationFilter\n│\n└── META-INF/spring\n    └── AutoConfiguration.imports\n```\n\n---\n\n# Tech Stack\n\n| Layer        | Technology        |\n| ------------ | ----------------- |\n| Language     | Java 21           |\n| Framework    | Spring Boot 4.x.x |\n| Security     | Spring Security   |\n| JWT          | JJWT              |\n| Build Tool   | Maven             |\n| Distribution | GitHub Packages   |\n| CI/CD        | GitHub Actions    |\n\n---\n\n# Current Security Features\n\n* JWT Bearer Authentication\n* Stateless Authentication\n* Automatic Request Filtering\n* SecurityContext Integration\n* Public \u0026 Protected Route Handling\n\n---\n\n# Upcoming Features\n\n* Dynamic excluded routes\n* Role-based authorization\n* Authorities extraction\n* Redis token blacklist\n* Refresh token workflow\n* RSA key support\n* Swagger/OpenAPI integration\n* OAuth2 support\n* Custom JWT annotations\n* Multi-tenant JWT support\n\n---\n\n# Contributing\n\nContributions, feature ideas, and pull requests are welcome.\n\nFeel free to open issues for:\n\n* bug reports\n* feature requests\n* improvements\n* integrations\n\n---\n\n# License\n\nMIT License\n\n---\n\n# Author\n\n## Smit Roy\n\nGitHub:\nhttps://github.com/smitroy4\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmitroy4%2Fjwt-spring-boot-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmitroy4%2Fjwt-spring-boot-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmitroy4%2Fjwt-spring-boot-starter/lists"}