Adicionar Autenticacao-e-Sessao
parent
fea2611dea
commit
9972a4b864
89
Autenticacao-e-Sessao.-.md
Normal file
89
Autenticacao-e-Sessao.-.md
Normal file
@ -0,0 +1,89 @@
|
||||
# Autenticacao e Sessao
|
||||
|
||||
## Visao geral
|
||||
|
||||
O frontend autentica o usuario pelo backend e mantem a sessao no navegador usando `sessionStorage`.
|
||||
|
||||
Fluxos suportados:
|
||||
|
||||
- login LDAP/AD por usuario e senha;
|
||||
- login Microsoft OAuth;
|
||||
- sessao com JWT proprio da aplicacao.
|
||||
|
||||
## Login LDAP/AD
|
||||
|
||||
```text
|
||||
LoginPage
|
||||
-> useLogin()
|
||||
-> loginWithAd()
|
||||
-> POST /auth/login
|
||||
-> storeAuthSession()
|
||||
-> /home
|
||||
```
|
||||
|
||||
O backend retorna:
|
||||
|
||||
```json
|
||||
{
|
||||
"token": "jwt",
|
||||
"user": {
|
||||
"id": "1",
|
||||
"name": "Usuario",
|
||||
"username": "usuario",
|
||||
"perfis": ["Admin"],
|
||||
"areas": ["Suporte"],
|
||||
"accessStatus": "assigned"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Login Microsoft
|
||||
|
||||
O backend redireciona para o frontend com o payload no fragmento da URL:
|
||||
|
||||
```text
|
||||
/login#auth=<payload>
|
||||
```
|
||||
|
||||
O fragmento nao e enviado ao servidor HTTP. O frontend:
|
||||
|
||||
1. le o `#auth`;
|
||||
2. decodifica o payload;
|
||||
3. salva a sessao;
|
||||
4. limpa a URL;
|
||||
5. navega para `/home`.
|
||||
|
||||
## Armazenamento da sessao
|
||||
|
||||
O frontend salva:
|
||||
|
||||
```text
|
||||
sessionStorage.authToken
|
||||
sessionStorage.authUser
|
||||
```
|
||||
|
||||
Nao usa mais `localStorage` para token ou usuario.
|
||||
|
||||
Motivo:
|
||||
|
||||
- a sessao nao fica persistida apos fechar o navegador;
|
||||
- reduz risco de reaproveitar sessao antiga;
|
||||
- evita mocks locais antigos de perfil.
|
||||
|
||||
## Bearer token
|
||||
|
||||
O arquivo `src/shared/services/authFetch.js` instala um interceptador global de `fetch`.
|
||||
|
||||
Para chamadas feitas contra `VITE_API_URL`, ele adiciona:
|
||||
|
||||
```http
|
||||
Authorization: Bearer <token>
|
||||
```
|
||||
|
||||
## Logout
|
||||
|
||||
O logout chama `clearSession()`, removendo:
|
||||
|
||||
- `sessionStorage.authToken`;
|
||||
- `sessionStorage.authUser`;
|
||||
- valores antigos em `localStorage`, se existirem.
|
||||
Loading…
Reference in New Issue
Block a user