2 Autenticacao-e-Sessao
Rafael Lopes edited this page 2026-06-02 09:08:14 -03:00

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

LoginPage
  -> useLogin()
  -> loginWithAd()
  -> POST /auth/login
  -> storeAuthSession()
  -> /home

O backend retorna:

{
  "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:

/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:

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.

Validade do JWT

Antes de considerar o usuario autenticado, o frontend decodifica o payload do JWT e valida o campo exp.

Se o token estiver ausente, invalido ou expirado:

  • authToken e authUser sao removidos;
  • a rota protegida redireciona para /login;
  • chamadas API que retornam 401 tambem limpam a sessao.

Bearer token

O arquivo src/shared/services/authFetch.js instala um interceptador global de fetch.

Para chamadas feitas contra VITE_API_URL, ele adiciona:

Authorization: Bearer <token>

Se o backend responder 401, o interceptador limpa a sessao e envia o usuario para /login.

Logout

O logout chama clearSession(), removendo:

  • sessionStorage.authToken;
  • sessionStorage.authUser;
  • valores antigos em localStorage, se existirem.