Atraso de JWT - Diferença de horário entre servidor e ambiente local


Imagine o seguinte cenário:

Você tem um servidor de autenticação que emite tokens JWT para suas aplicações, tanto em produção quanto durante o desenvolvimento local.

Em produção tudo funciona perfeitamente. Mas, durante o desenvolvimento, você começa a enfrentar um problema: ao tentar usar o token recém-gerado, recebe uma resposta de "não autorizado".

Por que isso acontece?
A resposta está no relógio das máquinas. Mesmo uma pequena diferença de segundos entre o horário do servidor e o da sua máquina local pode causar esse tipo de erro.

Exemplo:
  • No servidor, o horário é 10:10:10.
  • Na sua máquina local, 10:10:00.
Ou seja, há um atraso de 10 segundos.

Quando você solicita um token e tenta usá-lo imediatamente, o sistema entende que o token ainda não é válido, já que o horário atual da sua máquina não atingiu o horário de emissão registrado no token.

Essa pequena diferença é suficiente para gerar o "não autorizado".

Como resolver?

Para contornar esse problema, especialmente quando a diferença é pequena, usamos a propriedade ClockSkew, que define uma tolerância de tempo na validação do JWT.

Basta configurar assim:


Com isso, você permite uma margem de 10 segundos para compensar pequenas diferenças entre os relógios — e seu ambiente de desenvolvimento volta a funcionar tranquilamente.

Comentários