Executando verificação de segurança...
2

[DÚVIDA] Fluxo de Autenticação e Sessão

Estou desenvolvendo um projetinho de estudo que devo postar nas próximas semanas e me surgiu uma dúvida.

Atualmente, o fluxo de autenticação e gerenciamento de sessão está estruturado da seguinte maneira:

1. Autenticação
O usuário se autentica através da rota /api/auth/login, e são gerados três dados sessionId, authToken e refreshToken

2. Armazenamento do RefreshToken
O refreshToken é armazenado no banco de dados para consultas futuras, permitindo a revalidação do authToken ou a finalização da sessão do usuário.

3. Armazenamento no Redis
O sessionId é armazenado no Redis com um valor único (uuid).

4. Acesso às Rotas Privadas
Quando o usuário acessa as rotas privadas, ele envia o authToken no cabeçalho Authorization. O middleware de autenticação (authMiddleware) realiza os seguintes passos:

  • Verifica se o token existe e se é válido.
  • Se o token for válido, verifica no Redis se há uma sessão ativa associada ao sessionId.

5. Sessão Ativa
Caso haja uma sessão ativa, o usuário é recuperado através do uuid e os dados do usuário são disponibilizados para os serviços da aplicação.

6. Sessão Inativa
Se a sessão não for ativa, o middleware verifica se o refreshToken está presente e é válido. Se o refreshToken for válido, um novo sessionId e authToken são gerados para o usuário, mantendo a sessão ativa. Caso contrário, o usuário é deslogado, a sessão é removida e o refreshToken é revogado.

Devo criptografar o uuid antes de armazená-lo no Redis ou ele deve ser armazenado de forma direta? Qual seria a melhor abordagem para garantir a segurança? O fluxo está bem estruturado ou há falhas que precisam ser corrigidas?

Criei um fluxograma para visualizar o fluxo de autenticação, caso alguém tenha sugestões ou perceba incoerências, ficaria grato pelos comentários.

OBS: Sei que o fluxograma não está completo, pois não adicionei como seria a parte de gerenciamento de sessão no front-end e provavelmente faltam informações sobre como os tokens são revogados, além do que acontece especificamente quando o usuário realiza o logout, mas o intuito é ter uma ideia geral.

Diagrama

Carregando publicação patrocinada...