Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • garbus-wiki garbus-wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 35
    • Issues 35
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GarbUs
  • garbus-wikigarbus-wiki
  • Wiki
  • arquitetura

arquitetura · Changes

Page history
Update arquitetura authored Jun 24, 2021 by Angelo Calebe Araujo da Rocha's avatar Angelo Calebe Araujo da Rocha
Hide whitespace changes
Inline Side-by-side
arquitetura.md
View page @ daa27973
...@@ -10,15 +10,13 @@ Esta é a página onde irá ficar todas as informações da Arquitetura do seu p ...@@ -10,15 +10,13 @@ Esta é a página onde irá ficar todas as informações da Arquitetura do seu p
funcional) funcional)
* Objects – Backend API * Objects – Backend API
* Methods – Backend API * Methods – Backend API
* Arquitetura Não Funcional) * Arquitetura Não Funcional
* Diagrama de Pacotes / Componentes * Diagrama de Pacotes / Componentes (Arquitetura de software)
(Arquitetura de software)
* Diagrama de Deploy * Diagrama de Deploy
* Documentação sobre aplicação de * Documentação sobre aplicação de Design do Projeto
Design do Projeto
* Análise dos principios SOLID * Análise dos principios SOLID
* Code Review * Code Review
*
Devem ser apresentados das seguintes formas: Devem ser apresentados das seguintes formas:
* Imagens ou Gifs * Imagens ou Gifs
...@@ -57,3 +55,33 @@ As rotas do backend estão acessíveis no Postman e documentadas utilizando Swag ...@@ -57,3 +55,33 @@ As rotas do backend estão acessíveis no Postman e documentadas utilizando Swag
[![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/15973252-f44b1278-8442-4898-8778-4e37501d7f38?action=collection%2Ffork&collection-url=entityId%3D15973252-f44b1278-8442-4898-8778-4e37501d7f38%26entityType%3Dcollection%26workspaceId%3D23e543fe-3382-4e89-af71-2692db9c051a#?env%5BGarbus%5D=W3sia2V5Ijoiand0VG9rZW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoibG9naW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicGFzc3dvcmQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9XQ==) [![Run in Postman](https://run.pstmn.io/button.svg)](https://app.getpostman.com/run-collection/15973252-f44b1278-8442-4898-8778-4e37501d7f38?action=collection%2Ffork&collection-url=entityId%3D15973252-f44b1278-8442-4898-8778-4e37501d7f38%26entityType%3Dcollection%26workspaceId%3D23e543fe-3382-4e89-af71-2692db9c051a#?env%5BGarbus%5D=W3sia2V5Ijoiand0VG9rZW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoibG9naW4iLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9LHsia2V5IjoicGFzc3dvcmQiLCJ2YWx1ZSI6IiIsImVuYWJsZWQiOnRydWV9XQ==)
<a href="https://ages-garbus.duckdns.org/api/garbus/swagger-ui.html"><img src="https://static1.smartbear.co/swagger/media/assets/images/swagger_logo.svg" alt="Swagger" width="123" /></a> <a href="https://ages-garbus.duckdns.org/api/garbus/swagger-ui.html"><img src="https://static1.smartbear.co/swagger/media/assets/images/swagger_logo.svg" alt="Swagger" width="123" /></a>
# Segurança
## Controle de acesso
Há dois tipos de usuários:
- Operador: Pessoal que faz a limpeza das lixeiras. Tem acesso apenas ao mapa e as lixeiras na aplicação web;
- Gestor: Gestores da operação. Além do mapa, tem acesso a recursos de cadastro de usuários, zonas, prédios e lixeiras.
O controle de acesso é feito utilizando o conceito de *roles*. As rotas exclusivas para os gestores não são acessíveis pelos operadores.
Os usuários devem ter login e senha para entrar na aplicação. Os gestores são os responsáveis por criar logins. Ao criar o login, é gerada uma senha aleatória e provisória; Ao logar pela primeira vez, o usuário será obrigado a alterar a senha.
Há um recurso de redefinição de senha, que pode ser feito de duas formas:
- Na aplicação web, o usuário clica em *Esqueci a senha* e informa o login. Uma senha provisória é enviada para o e-mail cadastrado, se houver;
- Na parte administrativa da aplicação web (acessível apenas pelos gestores), o gestor pode redefinir a senha de qualquer usuário. Desta forma, usuários sem e-mail cadastrado também estão cobertos.
Da mesma forma que logando pela primeira vez, o usuário será obrigado a alterar a senha provisória gerada.
## Detalhes de autenticação
O mecanismo de autenticação é JWT. Cada token tem 5 horas de duração (configurável no backend) e utiliza criptografia HS256 para validação.
## Vault
As senhas e configurações utilizadas no projeto estão armazenadas em uma instância do Vault. As aplicações autenticam-se no Vault utilizando o método [AppRole](https://www.vaultproject.io/docs/auth/approle). Podem ser criados usuários para os desenvolvedores e/ou gestores, para fins de gerenciamento.
Ao criar uma instância do Vault, um [*root token*](https://www.vaultproject.io/docs/concepts/tokens#root-tokens) é criado. Esse token dá acesso irrestrito ao cofre, então não é recomendado utilizá-lo a não ser que seja necessário. Também são geradas chaves (em uma quantidade configurável) para deslacrar o cofre ([unseal](https://www.vaultproject.io/docs/concepts/seal)). O Vault é inicializado lacrado, sendo necessárias essas chaves para que as informações salvas no cofre possam ser acessadas.
## Acesso Web
A maior parte dos componentes do projeto é acessível apenas através do Nginx. Desta forma, há logs de acesso centralizados.
O acesso pelo Nginx é realizado por HTTPS, utilizando certificados do Let's Encrypt. Este é um requisito para utilizar o Service Worker, que habilita as funções de PWA (aplicativo instalável e notificações).
Clone repository
  • Backend
  • Gerenciamento do Projeto
  • Solução de Problemas: Prettier e quebras de linha
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • Workshops
  • arquitetura
  • banco_dados
  • configuracao
  • Home
  • horarios
  • instalacao
  • mockups
  • requisitos
View All Pages