Eu vi alguns tutoriais semelhantes a esse e em todos eu não consegui entender uma coisa. Na vida real, como você passaria o refresh token para a API? Ela precisa ser armazenada em um lugar, certo? Onde armazenar o refresh token pra tornar essa ação automática? Cookies, local storage ou outro lugar?
O papel seria do front armazenar isso, pode ser Cookies, localstorage e mandar isso pelo Header das requisições. A ideia do jwt, é que o backend não armazene nada, apenas faça uma validação.
Eu tô implementando em uma aplicação, e armazenando no local storage, usando redux pra disponibilizar isso para todos os componentes da aplicação. Mas dá tbm pra usar só o local storage sem precisar de redux. Vc armazena, e aí vc cria uma função pra ficar verificando a validade desse token e tbm do refresh. Aí vc seta um tempo pra ele atualizar o token através do refresh token.
Se falarmos da teoria, o próprio oAuth recomenda que você não armazene o Refresh Token no front. Por isso que, na teoria, ele é mais indicado pra ambientes mais seguros - eg. comunicação entre backends. Na prática, claro, é diferente. 😋 Então sim, ela precisa ser armazenada no front. Pode ser no localStorage ou nos cookies. O melhor lugar é você armazená-lo como um "HttpOnly Cookie", que é um tipo especial de cookie que só o browser consegue acessar, mas apps JavaScript não; ou seja, ataques XSS não conseguem ler um HttpOnly Cookie.
Opa, bom dia! Ótimo vídeo, mas tenho um dúvida... Em questão, você passa as informações para o refresh token, com o usuário e senha, se caso eu passar um id, por exemplo, e o front-end fizer uma request com o access token, vou ter que verificar o refresh para pegar as credenciais?
Muito obrigado pelo video! me surgiu uma duvida, como faço para tornar esse token de refresh invalido? Caso o usuario faça um logout, troque a senha ou algo do tipo
Excelente pergunta! Para esses casos, o JWT não é indicado pela regra de negócio, apos gerar um token, não temos controle até que a data de validade acabe, por esse motivo, muitos devs armazenam ele em um banco de dados para invalidar, criando tabelas com nome de blacklist ou algo do tipo, foge um pouco do conceito de stateless, porém funciona .
Cara, como eu procurei por um tutorial assim. Passei por videos e mais videos, sites e mais sites, todos confusos e no final não entendi nada. Seu video me ajudou muito, testei com o meu problema e funcionou e também consegui entender, muito obrigado.
Rafael, obrigado pelo tutorial! Estava com algumas dúvidas aqui e seu vídeo me ajudou muito. Seria bacana outro vídeo com um implementação dessa API com VueJS. Tenho um ponto somente, acredito que não seja uma boa prática adicionar informações sensíveis como o password do usuário no JWT, pois como você demonstrou ele pode ser facilmente "decifrado" e se alguém conseguir o token pode ter acesso ao conteúdo dele.
Perfeito Felipe, informações sensíveis não podem ser armazenadas no JWT pela facilidade de acesso do token, apenas dados não sensíveis e que dificilmente vão mudar como exemplo "id"