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