... | ... | @@ -10,15 +10,13 @@ Esta é a página onde irá ficar todas as informações da Arquitetura do seu p |
|
|
funcional)
|
|
|
* Objects – Backend API
|
|
|
* Methods – Backend API
|
|
|
* Arquitetura Não Funcional)
|
|
|
* Diagrama de Pacotes / Componentes
|
|
|
(Arquitetura de software)
|
|
|
* Arquitetura Não Funcional
|
|
|
* Diagrama de Pacotes / Componentes (Arquitetura de software)
|
|
|
* Diagrama de Deploy
|
|
|
* Documentação sobre aplicação de
|
|
|
Design do Projeto
|
|
|
* Documentação sobre aplicação de Design do Projeto
|
|
|
* Análise dos principios SOLID
|
|
|
* Code Review
|
|
|
*
|
|
|
|
|
|
Devem ser apresentados das seguintes formas:
|
|
|
|
|
|
* Imagens ou Gifs
|
... | ... | @@ -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==)
|
|
|
<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).
|
|
|
|