Implementando Refresh Token utilizando JWT
HTML-код
- Опубликовано: 7 ноя 2024
- Refresh Token é uma técnica muito utilizada para revalidar o acesso ao sistema e pode ser implementado de diversas formas. Nesse vídeo, você verá como implementar essa técnica utilizando JWT (JSON Web Token) que foi inspirada em um vídeo do MVP Bruno Brito.
Assista a live na íntegra: www.youtube.co...
Vídeo do Bruno Brito: • REFRESH TOKEN DA FORMA...
---------------------------------
Comunidade no Discord: bit.ly/andresec...
Siga-me também nas plataformas:
Site/Blog: andresecco.com.br
Twitch: / andresecco
Facebook: / andresecco.fanpage
Twitter: / andre_secco
Instagram: / secco.andre
GitHub: github.com/and...
#RefreshToken #JWT #Token
Conteúdo de ótima qualidade, parabéns pela aula André
Talvez este seja o vídeo mais completo e detalhado que vi de refresh token até agora...Excelente vídeo e me ajudou bastante!
Mas eu tenho uma dúvida na qual não consigo pensar rápido em uma solução fácil: E se este refresh-token for roubado por alguém? Como é algo que detêm um poder muito grande, tendo em vista que ele pode gerar tokens de autenticação para o usuário em questão, esta solução não se torna um problema? E se alguém com más intenções rouba este token, como ficaria? Porque pelo que vejo, o grande problema de tudo é realmente este token JWT do refresh token cair nas mãos erradas..
Geralmente eu tendo a salvar o Refresh-token no Cookie com HTTPOnly ativado pra evitar seu acesso via javascript. Mas aí gera um outro problema que é os ataques CSRF...Perceba que um problema vai levando a outro problema. Não consigo enxergar uma saída tão fácil assim pra realmente dar uma segurança maior pro refresh-token.
Olá Pedro! Que bom que gostou e valeu pelo feedback!
Sobre a questão de "sequestro" dos refresh-token, realmente. Há algumas formas de dificultar esse roubo. Se você salvar ele como cookie, além de defini-lo como HTTPOnly, você pode usar também a propriedade SameSite para se proteger de CSFR.
Mas para ter maior segurança ainda, o ideal não seria utilizar o Refresh-Token como um JWT e sim como um token qualquer que seria persistido em uma base de dados. Sempre que alguém fizesse um login no sistema ou até mesmo solicitasse um novo token via refresh-token, os outros refresh-tokens seriam invalidados. Dessa forma, se o atacante não conseguiria utilizar eternamente o RF para sempre ter acesso, pois quando o usuário legítimo o fizesse, ele teria seu RF invalidado e aí quebraria o ciclo.
@ muito obrigado por tirar a dúvida!
O problema de invalidar os outros refresh tokens é que já afetaria o login em outros dispositivos na qual a aplicação estaria logada. Lidar com refresh-token na questão de segurança está sendo bastante complicado e desafiador pra mim. Pois dificilmente consigo achar uma solução onde a segurança e o UX estão andando juntos. Sempre está caindo ou pra um lado, ou para o outro e nunca possui um bom equilíbrio
Realmente Pedro, sempre temos um trade-off. Talvez controlar os RF por dispositivo e invalidar apenas daquele dispositivo em si. Enfim, algumas opções que dá para ir explorando.
Inclusive se quiser participar do nosso discord, lá fica mais fácil de trocar ideias com outros profissionais também: bit.ly/andresecco_discord
Ótima aula