From 9972a4b864e309e0640ad662b2e4747246715a3d Mon Sep 17 00:00:00 2001 From: Rafael Alves Lopes Date: Fri, 29 May 2026 15:36:50 -0300 Subject: [PATCH] Adicionar Autenticacao-e-Sessao --- Autenticacao-e-Sessao.-.md | 89 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Autenticacao-e-Sessao.-.md diff --git a/Autenticacao-e-Sessao.-.md b/Autenticacao-e-Sessao.-.md new file mode 100644 index 0000000..edc6e2f --- /dev/null +++ b/Autenticacao-e-Sessao.-.md @@ -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= +``` + +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 +``` + +## Logout + +O logout chama `clearSession()`, removendo: + +- `sessionStorage.authToken`; +- `sessionStorage.authUser`; +- valores antigos em `localStorage`, se existirem.