Pular para o conteudo principal

Sessao, Token, Cookie, Refresh Token e Expiração

Como essas pecas se relacionam sem virar uma sopa de termos em que tudo parece autenticação e nada fica realmente claro.

Andrews Ribeiro

Andrews Ribeiro

Founder & Engineer

O problema

Tem conversa de autenticação que parece bingo técnico:

  • sessao
  • token
  • cookie
  • refresh token
  • expiração

Todo mundo conhece as palavras.

Nem sempre conhece o papel de cada uma.

Ai começam explicacoes ruins como:

  • “cookie e a sessao”
  • “token e mais seguro”
  • “refresh token e o login”

Essas frases só parecem claras até aparecer o primeiro bug.

Modelo mental

Pense assim:

  • sessao: contexto continuo que a aplicação reconhece
  • cookie: mecanismo do browser para guardar e enviar dado
  • access token: credencial usada para provar acesso numa request
  • refresh token: credencial usada para obter novo access token
  • expiração: limite de tempo para reduzir risco e obrigar renovação

Cada peca responde uma pergunta diferente.

Quando tudo vira “autenticação”, o time perde clareza.

Quebrando o problema

A aplicação pode manter uma sessao no servidor:

  • usuário autenticado
  • horario de expiração
  • contexto básico

E usar um identificador em cookie para reencontrar essa sessao.

Nesse caso:

  • cookie carrega a chave
  • sessao vive como estado reconhecido pela aplicação

Token não e o mesmo que armazenamento

Token e a credencial.

Ele pode ser enviado em:

  • header Authorization
  • cookie
  • outro mecanismo do fluxo

Ou seja:

cookie responde “onde esta e como vai”

token responde “o que prova”

Refresh token tem função especifica

Refresh token não serve para sair chamando API de negócio o dia inteiro.

Ele costuma existir para:

  • permitir access token curto
  • renovar acesso sem pedir login toda hora

Isso ajuda a equilibrar UX e segurança.

Expiração existe para limitar dano

Se uma credencial vaza e dura para sempre, o estrago também pode durar.

Expiração curta em access token reduz janela de abuso.

Refresh token, por outro lado, costuma exigir cuidado maior:

  • armazenamento melhor
  • rotação
  • revogacao quando necessário

Exemplo simples

Imagine uma SPA que faz login e recebe:

  • access token com 15 minutos
  • refresh token com vida maior

Fluxo simples:

  1. usuário faz login
  2. app recebe credenciais
  3. access token vai nas requests da API
  4. quando expira, app usa refresh token para pedir novo access token
  5. se refresh falhar, usuário volta a autenticar

O erro comum e pensar que tudo isso e “o token”.

Não e.

Cada parte tem papel próprio no equilibrio entre:

  • segurança
  • UX
  • operação

Erros comuns

  • Tratar cookie como sinonimo de sessao.
  • Chamar qualquer credencial de token sem dizer qual.
  • Dar vida longa demais para access token.
  • Usar refresh token como se fosse access token permanente.
  • Discutir armazenamento antes de explicar o papel de cada artefato.

Como um senior pensa

Quem tem mais experiência costuma organizar a conversa por função:

“O que representa identidade? O que a request usa para provar acesso? Onde isso fica guardado? Como essa credencial vence e como renova?”

Essa sequência deixa a arquitetura menos misturada.

Também ajuda a não transformar escolha de transporte em debate ideologico.

O que o entrevistador quer ver

Em entrevista, o avaliador quer ver se você:

  • diferencia papel de cada peca
  • entende por que expiração existe
  • não mistura token com cookie por reflexo
  • consegue explicar renovação sem misticismo

Uma resposta forte costuma soar assim:

“Eu separaria o que e contexto de sessao, o que e artefato de transporte e o que e credencial de acesso. Access token serve para chamar recurso, refresh token serve para renovar acesso curto, e cookie pode ser apenas o mecanismo de envio dependendo do desenho.”

Misturar nome de artefato com função de segurança e um jeito eficiente de desenhar fluxo confuso.

Quando cada peca tem papel claro, a conversa de autenticação fica muito menos nebulosa.

Resumo rápido

O que vale manter na cabeça

Checklist de pratica

Use isto ao responder

Você concluiu este artigo

Próximo artigo Backfill Sem Derrubar Banco nem Fila Artigo anterior Como Pensar Segurança em SPA, SSR e APIs

Continue explorando

Artigos relacionados