Spring boilerplate
This Spring boot project was developed with the default authentication settings in mind and
documentation to serve as a basis for developing other projects.
- Role-based access control with JWT 🔑
- technology used 🔛
- Java 8
- Maven 3.6.3
- Spring Boot 2.7.0
- Starter Web
- Starter Data JPA
- Starter Test (JUnit / Mockito)
- Starter Log4J2
- Devtools
- Spring Security 5.6.4
- Secutiry Oauth2 Autoconfigure 2.1.5
- Security Test
- Springfox (Swagger) 3.0.0
- Lombok - Help setting up lombok
- Database
- Postgres:13 (Relational Database)
- Starter Data Redis (Token Store)
- h2database (Profile Test)
- Application.properties - Default 📃
- Port: 5000
- Profile: dev
- Base path: /api
- Encrypt: bcrypt
- Hibernate DDL: update
- ExceptionHandler ❌
- ProjectException:
- Status: 400
- Description: Exception provoked, n reasons, but mainly business rule
- AuthorizationException:
- Status: 403
- Description: Access Denied with RuntimeException
- ProjectException:
It is not necessary to have Java, Maven, Postgres or redis installed, all services will run in Docker containers.
- Docker 🔽
- Install docker here
- File .env 📋
- Example:
DB_AUTHSERVICE_DATABASE_NAME=authservice_database DB_AUTHSERVICE_USERNAME=postgres DB_AUTHSERVICE_PASSWORD=pg_postgres CLIENT_ID=52da334b25d96304a09901705846663fef41ce8f CLIENT_SECRET=99214c1e0dd20c56e76d4b2716b39e63a38e8d9b
- Git clone project
git clone https://github.com/andresinho20049/spring-authservice-with-docker.git
- Go into the project folder
cd spring-authservice-with-docker
- Create a file .env in root folder project
tee -a ./.env <<EOF
DB_AUTHSERVICE_DATABASE_NAME=authservice_database
DB_AUTHSERVICE_USERNAME=postgres
DB_AUTHSERVICE_PASSWORD=pg_postgres
CLIENT_ID=52da334b25d96304a09901705846663fef41ce8f
CLIENT_SECRET=99214c1e0dd20c56e76d4b2716b39e63a38e8d9b
To exit type EOF, then press ENTER
- Run docker compose with env file parameters
docker compose --env-file=./.env up --build
It is configured by default to start in the Dev profile, in this profile a support user is created when starting spring
The default is: 😎
Username: [email protected]
Password: strongPassword@1234
With the project running, visit the Swagger page to test the endpoints
- In the browser type the path:
/api/swagger-ui/index.html
- or If you prefer click here
also visit redis console, runing port 8001
{
"id": 1,
"name": "Admin",
"email": "[email protected]",
"updatePassword": true,
"active": true,
"roles": [
{
"name": "ROLE_ADMIN"
}
]
}
[
{
"name": "ROLE_ADMIN"
},
{
"name": "ROLE_VIEW_USER"
},
{
"name": "ROLE_CREATE_USER"
},
{
"name": "ROLE_UPDATE_USER"
},
{
"name": "ROLE_DISABLE_USER"
}
]
{
"aud": [
"restservice"
],
"updatePassword": true,
"user_name": "[email protected]",
"scope": [
"all"
],
"name": "Admin",
"exp": 1655404387,
"authorities": [
"ROLE_ADMIN"
],
"jti": "7d12042b-856b-41a7-b1d9-6acb220840a7",
"client_id": "52da334b25d96304a09901705846663fef41ce8f"
}
This project was developed to be able to use it as an authentication service for other applications, such as websites
Project: Spring boot with Redis and Postgres using Docker
By: André Carlos (andresinho20049)