{"id":26179289,"url":"https://github.com/bezkoder/spring-boot-spring-security-jwt-authentication","last_synced_at":"2025-10-03T20:51:47.495Z","repository":{"id":37548266,"uuid":"215340180","full_name":"bezkoder/spring-boot-spring-security-jwt-authentication","owner":"bezkoder","description":"Spring Boot + Security: Token Based Authentication example with JWT, Authorization, Spring Data \u0026 MySQL","archived":false,"fork":false,"pushed_at":"2024-04-09T04:59:20.000Z","size":141,"stargazers_count":1434,"open_issues_count":24,"forks_count":852,"subscribers_count":24,"default_branch":"master","last_synced_at":"2025-04-09T03:12:12.432Z","etag":null,"topics":["jwt","jwt-authentication","spring-boot","spring-boot-2","spring-boot-security","spring-boot-server","spring-data","spring-security","spring-security-jwt"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bezkoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2019-10-15T16:02:02.000Z","updated_at":"2025-04-05T03:59:23.000Z","dependencies_parsed_at":"2025-03-26T01:20:49.450Z","dependency_job_id":null,"html_url":"https://github.com/bezkoder/spring-boot-spring-security-jwt-authentication","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezkoder%2Fspring-boot-spring-security-jwt-authentication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezkoder%2Fspring-boot-spring-security-jwt-authentication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezkoder%2Fspring-boot-spring-security-jwt-authentication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bezkoder%2Fspring-boot-spring-security-jwt-authentication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bezkoder","download_url":"https://codeload.github.com/bezkoder/spring-boot-spring-security-jwt-authentication/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254374427,"owners_count":22060611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["jwt","jwt-authentication","spring-boot","spring-boot-2","spring-boot-security","spring-boot-server","spring-data","spring-security","spring-security-jwt"],"created_at":"2025-03-11T21:49:29.940Z","updated_at":"2025-10-03T20:51:42.461Z","avatar_url":"https://github.com/bezkoder.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Boot JWT Authentication example with Spring Security \u0026 Spring Data JPA\n\n## User Registration, User Login and Authorization process.\nThe diagram shows flow of how we implement User Registration, User Login and Authorization process.\n\n![spring-boot-jwt-authentication-spring-security-flow](spring-boot-jwt-authentication-spring-security-flow.png)\n\n## Spring Boot Server Architecture with Spring Security\nYou can have an overview of our Spring Boot Server with the diagram below:\n\n![spring-boot-jwt-authentication-spring-security-architecture](spring-boot-jwt-authentication-spring-security-architecture.png)\n\n## Dependency\n– If you want to use PostgreSQL:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.postgresql\u003c/groupId\u003e\n  \u003cartifactId\u003epostgresql\u003c/artifactId\u003e\n  \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n– or MySQL:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.mysql\u003c/groupId\u003e\n  \u003cartifactId\u003emysql-connector-j\u003c/artifactId\u003e\n  \u003cscope\u003eruntime\u003c/scope\u003e\n\u003c/dependency\u003e\n```\n## Configure Spring Datasource, JPA, App properties\nOpen `src/main/resources/application.properties`\n- For PostgreSQL:\n```\nspring.datasource.url= jdbc:postgresql://localhost:5432/testdb\nspring.datasource.username= postgres\nspring.datasource.password= 123\n\nspring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation= true\nspring.jpa.properties.hibernate.dialect= org.hibernate.dialect.PostgreSQLDialect\n\n# Hibernate ddl auto (create, create-drop, validate, update)\nspring.jpa.hibernate.ddl-auto= update\n\n# App Properties\nbezkoder.app.jwtSecret= bezKoderSecretKey\nbezkoder.app.jwtExpirationMs= 86400000\n```\n- For MySQL\n```\nspring.datasource.url=jdbc:mysql://localhost:3306/testdb_spring?useSSL=false\nspring.datasource.username=root\nspring.datasource.password=123456\n\nspring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect\nspring.jpa.hibernate.ddl-auto=update\n\n# App Properties\nbezkoder.app.jwtSecret= ======================BezKoder=Spring===========================\nbezkoder.app.jwtExpirationMs=86400000\n```\n## Run Spring Boot application\n```\nmvn spring-boot:run\n```\n\n## Run following SQL insert statements\n```\nINSERT INTO roles(name) VALUES('ROLE_USER');\nINSERT INTO roles(name) VALUES('ROLE_MODERATOR');\nINSERT INTO roles(name) VALUES('ROLE_ADMIN');\n```\n\nFor more detail, please visit:\n\u003e [Secure Spring Boot with Spring Security \u0026 JWT Authentication](https://bezkoder.com/spring-boot-jwt-authentication/)\n\n\u003e [For MongoDB](https://bezkoder.com/spring-boot-jwt-auth-mongodb/)\n\n## Refresh Token\n\n![spring-boot-refresh-token-jwt-example-flow](spring-boot-refresh-token-jwt-example-flow.png)\n\nFor instruction: [Spring Boot Refresh Token with JWT example](https://bezkoder.com/spring-boot-refresh-token-jwt/)\n\n## More Practice:\n\u003e [Spring Boot JWT Authentication example using HttpOnly Cookie](https://www.bezkoder.com/spring-boot-login-example-mysql/)\n\n\u003e [Spring Boot File upload example with Multipart File](https://bezkoder.com/spring-boot-file-upload/)\n\n\u003e [Exception handling: @RestControllerAdvice example in Spring Boot](https://bezkoder.com/spring-boot-restcontrolleradvice/)\n\n\u003e [Spring Boot Repository Unit Test with @DataJpaTest](https://bezkoder.com/spring-boot-unit-test-jpa-repo-datajpatest/)\n\n\u003e [Spring Boot Pagination \u0026 Sorting example](https://www.bezkoder.com/spring-boot-pagination-sorting-example/)\n\n\u003e Validation: [Spring Boot Validate Request Body](https://www.bezkoder.com/spring-boot-validate-request-body/)\n\n\u003e Documentation: [Spring Boot and Swagger 3 example](https://www.bezkoder.com/spring-boot-swagger-3/)\n\n\u003e Caching: [Spring Boot Redis Cache example](https://www.bezkoder.com/spring-boot-redis-cache-example/)\n\nAssociations:\n\u003e [Spring Boot One To Many example with Spring JPA, Hibernate](https://www.bezkoder.com/jpa-one-to-many/)\n\n\u003e [Spring Boot Many To Many example with Spring JPA, Hibernate](https://www.bezkoder.com/jpa-many-to-many/)\n\n\u003e [JPA One To One example with Spring Boot](https://www.bezkoder.com/jpa-one-to-one/)\n\nDeployment:\n\u003e [Deploy Spring Boot App on AWS – Elastic Beanstalk](https://www.bezkoder.com/deploy-spring-boot-aws-eb/)\n\n\u003e [Docker Compose Spring Boot and MySQL example](https://www.bezkoder.com/docker-compose-spring-boot-mysql/)\n\n## Fullstack Authentication\n\n\u003e [Spring Boot + Vue.js JWT Authentication](https://bezkoder.com/spring-boot-vue-js-authentication-jwt-spring-security/)\n\n\u003e [Spring Boot + Angular 8 JWT Authentication](https://bezkoder.com/angular-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 10 JWT Authentication](https://bezkoder.com/angular-10-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 11 JWT Authentication](https://bezkoder.com/angular-11-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 12 JWT Authentication](https://www.bezkoder.com/angular-12-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 13 JWT Authentication](https://www.bezkoder.com/angular-13-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 14 JWT Authentication](https://www.bezkoder.com/angular-14-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 15 JWT Authentication](https://www.bezkoder.com/angular-15-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 16 JWT Authentication](https://www.bezkoder.com/angular-16-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + Angular 17 JWT Authentication](https://www.bezkoder.com/angular-17-spring-boot-jwt-auth/)\n\n\u003e [Spring Boot + React JWT Authentication](https://bezkoder.com/spring-boot-react-jwt-auth/)\n\n## Fullstack CRUD App\n\n\u003e [Vue.js + Spring Boot + H2 Embedded database example](https://www.bezkoder.com/spring-boot-vue-js-crud-example/)\n\n\u003e [Vue.js + Spring Boot + MySQL example](https://www.bezkoder.com/spring-boot-vue-js-mysql/)\n\n\u003e [Vue.js + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-vue-js-postgresql/)\n\n\u003e [Angular 8 + Spring Boot + Embedded database example](https://www.bezkoder.com/angular-spring-boot-crud/)\n\n\u003e [Angular 8 + Spring Boot + MySQL example](https://bezkoder.com/angular-spring-boot-crud/)\n\n\u003e [Angular 8 + Spring Boot + PostgreSQL example](https://bezkoder.com/angular-spring-boot-postgresql/)\n\n\u003e [Angular 10 + Spring Boot + MySQL example](https://bezkoder.com/angular-10-spring-boot-crud/)\n\n\u003e [Angular 10 + Spring Boot + PostgreSQL example](https://bezkoder.com/angular-10-spring-boot-postgresql/)\n\n\u003e [Angular 11 + Spring Boot + MySQL example](https://bezkoder.com/angular-11-spring-boot-crud/)\n\n\u003e [Angular 11 + Spring Boot + PostgreSQL example](https://bezkoder.com/angular-11-spring-boot-postgresql/)\n\n\u003e [Angular 12 + Spring Boot + Embedded database example](https://www.bezkoder.com/angular-12-spring-boot-crud/)\n\n\u003e [Angular 12 + Spring Boot + MySQL example](https://www.bezkoder.com/angular-12-spring-boot-mysql/)\n\n\u003e [Angular 12 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/angular-12-spring-boot-postgresql/)\n\n\u003e [Angular 13 + Spring Boot + H2 Embedded Database example](https://www.bezkoder.com/spring-boot-angular-13-crud/)\n\n\u003e [Angular 13 + Spring Boot + MySQL example](https://www.bezkoder.com/spring-boot-angular-13-mysql/)\n\n\u003e [Angular 13 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-13-postgresql/)\n\n\u003e [Angular 14 + Spring Boot + H2 Embedded Database example](https://www.bezkoder.com/spring-boot-angular-14-crud/)\n\n\u003e [Angular 14 + Spring Boot + MySQL example](https://www.bezkoder.com/spring-boot-angular-14-mysql/)\n\n\u003e [Angular 14 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-14-postgresql/)\n\n\u003e [Angular 15 + Spring Boot + H2 Embedded Database example](https://www.bezkoder.com/spring-boot-angular-15-crud/)\n\n\u003e [Angular 15 + Spring Boot + MySQL example](https://www.bezkoder.com/spring-boot-angular-15-mysql/)\n\n\u003e [Angular 15 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-15-postgresql/)\n\n\u003e [Angular 16 + Spring Boot + H2 Embedded Database example](https://www.bezkoder.com/spring-boot-angular-16-crud/)\n\n\u003e [Angular 16 + Spring Boot + MySQL example](https://www.bezkoder.com/spring-boot-angular-16-mysql/)\n\n\u003e [Angular 16 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-16-postgresql/)\n\n\u003e [Angular 17 + Spring Boot + H2 Embedded Database example](https://www.bezkoder.com/spring-boot-angular-17-crud/)\n\n\u003e [Angular 17 + Spring Boot + MySQL example](https://www.bezkoder.com/spring-boot-angular-17-mysql/)\n\n\u003e [Angular 17 + Spring Boot + PostgreSQL example](https://www.bezkoder.com/spring-boot-angular-17-postgresql/)\n\n\u003e [React + Spring Boot + MySQL example](https://bezkoder.com/react-spring-boot-crud/)\n\n\u003e [React + Spring Boot + PostgreSQL example](https://bezkoder.com/spring-boot-react-postgresql/)\n\n\u003e [React + Spring Boot + MongoDB example](https://bezkoder.com/react-spring-boot-mongodb/)\n\nRun both Back-end \u0026 Front-end in one place:\n\u003e [Integrate Angular with Spring Boot Rest API](https://bezkoder.com/integrate-angular-spring-boot/)\n\n\u003e [Integrate React.js with Spring Boot Rest API](https://bezkoder.com/integrate-reactjs-spring-boot/)\n\n\u003e [Integrate Vue.js with Spring Boot Rest API](https://bezkoder.com/integrate-vue-spring-boot/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbezkoder%2Fspring-boot-spring-security-jwt-authentication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbezkoder%2Fspring-boot-spring-security-jwt-authentication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbezkoder%2Fspring-boot-spring-security-jwt-authentication/lists"}