Gostaria de implementar a autenticação baseada em JWT em nossa nova API REST. Mas como a expiração é definida no token, é possível prolongá-lo automaticamente? Eu não quero que os usuários precisem entrar após cada X minutos se estiverem usando o aplicativo ativamente nesse período. Isso seria uma grande falha no UX.
Mas prolongar a expiração cria um novo token (e o antigo ainda é válido até expirar). E gerar um novo token após cada solicitação parece bobagem para mim. Parece um problema de segurança quando mais de um token é válido ao mesmo tempo. É claro que eu poderia invalidar o antigo usado usando uma lista negra, mas precisaria armazenar os tokens. E um dos benefícios do JWT é o armazenamento.
Eu descobri como o Auth0 resolveu. Eles usam não apenas o token JWT, mas também um token de atualização: https://docs.auth0.com/refresh-token
Mais uma vez, para implementar isso (sem Auth0), eu precisaria armazenar tokens de atualização e manter a validade deles. Qual é o benefício real, então? Por que não ter apenas um token (não JWT) e manter a expiração no servidor?
Existem outras opções? O uso do JWT não é adequado para esse cenário?