Skip to content

Latest commit

 

History

History
168 lines (146 loc) · 4.41 KB

README.pt-br.md

File metadata and controls

168 lines (146 loc) · 4.41 KB

Spring boot com Redis e Postgres usando Docker

en

Spring boilerplate
Este projeto de inicialização do Spring foi desenvolvido pensando nas configurações de autenticação padrão e na documentação para servir de base para o desenvolvimento de outros projetos.

💬 Sobre:

  • Controle de acesso baseado em regras com JWT 🔑
  • Tecnologias usadas 🔛
    • 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

Não é necessario ter Java, Maven, Postgres ou redis instalado, todos os serviços vão executar em containers Docker.

⏬ Pré requisitos

  • Docker 🔽
    • Instalar docker here
  • Arquivo .env 📋
    • Exemplo:
    DB_AUTHSERVICE_DATABASE_NAME=authservice_database
    DB_AUTHSERVICE_USERNAME=postgres
    DB_AUTHSERVICE_PASSWORD=pg_postgres
    
    CLIENT_ID=52da334b25d96304a09901705846663fef41ce8f
    CLIENT_SECRET=99214c1e0dd20c56e76d4b2716b39e63a38e8d9b

🆙 Como começar

  1. Git clone do projeto
git clone https://github.com/andresinho20049/spring-authservice-with-docker.git
  1. Entre na pasta do projeto
cd spring-authservice-with-docker
  1. Crie um arquivo .env na pasta raiz do projeto
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

Para sair digite EOF, então pressione ENTER

  1. Execute docker compose com env file parametros
docker compose --env-file=./.env up --build

🔓 Autenticação

Ele é configurado por padrão para iniciar no perfil Dev, neste perfil um usuário de suporte é criado ao iniciar o Spring

O user default é: 😎
Username: [email protected]
Password: strongPassword@1234

Com o projeto em execução, visite a página do Swagger para testar os endpoints

  • No navegador digite o path: /api/swagger-ui/index.html
  • ou se preferir click aqui

tambem visite redis console, rodando na porta 8001

#️⃣ Modelo

User

{
  "id": 1,
  "name": "Admin",
  "email": "[email protected]",
  "updatePassword": true,
  "active": true,
  "roles": [
    {
      "name": "ROLE_ADMIN"
    }
  ]
}

Role

[
  {
    "name": "ROLE_ADMIN"
  },
  {
    "name": "ROLE_VIEW_USER"
  },
  {
    "name": "ROLE_CREATE_USER"
  },
  {
    "name": "ROLE_UPDATE_USER"
  },
  {
    "name": "ROLE_DISABLE_USER"
  }
]

JWT Payload Exemplo

{
  "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"
}

🎥 Preview

Preview Como iniciar

©️ Considerações

Este projeto foi desenvolvido para poder utilizá-lo como serviço de autenticação para outras aplicações, como sites

Projeto: Spring boot com Redis e Postgres usando Docker
Author: André Carlos (andresinho20049)