Imagem de fundo

Uma instituição expôs uma API RESTful protegida por JWT com várias instâncias atrás de ...

Uma instituição expôs uma API RESTful protegida por JWT com várias instâncias atrás de um balanceador, em que o login gera access token de 2 horas, que é validado em cada requisição por meio da assinatura da data de expiração e das claims de roles. Porém, após um incidente de credenciais vazadas, a equipe detectou que, mesmo após o usuário trocar a senha, os tokens antigos continuam válidos até expirarem inclusive em diferentes serviços que compartilham a mesma chave de assinatura. Para que a equipe possa mitigar esse problema mantendo a escalabilidade e o modelo stateless da API, a estratégia mais adequada é


A

adicionar no payload do JNWT um campo “revogado false” e atualizar esse campo para true no banco, deixando que as APIs leiam o token e confiem no valor recebido.


B

gravar todos os JWT emitidos em uma tabela relacional e validar cada requisição consultando essa tabela, garantindo revogação imediata ao excluir o registro do token.


C

usar access tokens de curta duração combinados com refresh tokens e uma claim de versão de credencial, invalidando tokens quando a versão do usuário muda ao validar o JNT nas APIs.


D

aumentar o tempo de expiração do JWT e rotacionar a chave de assinatura com mais frequência, levando os clientes a refazer login quando a chave for alterada.


E

incluir no JWT a senha hash do usuário e rejeitar tokens cujo hash não coincida com o valor atual no banco, garantindo que a troca de senha invalide automaticamente os tokens antigos.