ASP.NET WebApi JWT Refresh Token

  Рет қаралды 14,732

balta.io

balta.io

Күн бұрын

Пікірлер: 78
@baltaio
@baltaio 3 жыл бұрын
Participe do balta.io Experience, um evento online, ao vivo e gratuito que vai reunir grandes nomes da internet em uma experiência única! 👉 balta.io/experience
@Trindade1987
@Trindade1987 3 жыл бұрын
Como diz o Balta, "Direto ao ponto"! Simples, prático e rápido, muito boa didática, parabéns pelo conteúdo.
@baltaio
@baltaio 3 жыл бұрын
Muito obrigado 💜
@paulomfgoncalves
@paulomfgoncalves 3 жыл бұрын
Obrigado André Baltieri por este e todos os outros videos que tens publicado. Um optimo trabalho que tem clarificado muitas das minhas duvidas, sobretudo sobre arquitectura de API REST. Thanks
@baltaio
@baltaio 3 жыл бұрын
Muito obrigado 💜
@faya3959
@faya3959 3 жыл бұрын
Obrigado, estou desenvolvendo uma API pro meu TCC da minha escola e seus vídeos estão me ajudando muito❤️
@baltaio
@baltaio 3 жыл бұрын
@igorandrade7979
@igorandrade7979 3 жыл бұрын
Você poderia fazer vídeo explicação esta partes das validações. Ex: ValidIssuer, ValidAuthority, ValidAudiences.
@baltaio
@baltaio 3 жыл бұрын
Posso, claro!! Em breve
2 жыл бұрын
Um tutorial completo, incluindo, armazenamento em cookie, identity, armazenamento na tabela de tokens do identity... seria fantástico! Eu comprei um curso no udemi de identity, mas não explica jwt em profundidade
@rodrigodallarosa6935
@rodrigodallarosa6935 2 жыл бұрын
Parabéns balta, ótimo conteúdo, me ajudou bastante.
@baltaio
@baltaio Жыл бұрын
💜💜💜💜
@thiagobastani6663
@thiagobastani6663 Жыл бұрын
Não entendi uma coisa: Se você salvar os tokens em memoria num servico AddScoped, a lista do serviço vai ser gerada novamente a cada requisição. Como você fez pra memoria funcionar? AddSingleton?
@baltaio
@baltaio Жыл бұрын
AddScoped só dura enquanto a requisição existir, AddSingleton enquanto a aplicação não for reiniciada. No caso foi apenas uma demo!
@carlossouza5478
@carlossouza5478 2 жыл бұрын
Parabéns !!
@baltaio
@baltaio 2 жыл бұрын
Obrigado 💜
@gregercolin
@gregercolin 3 жыл бұрын
Otimo video, muito simples e rápido!! Parabéns!!
@baltaio
@baltaio 3 жыл бұрын
Espero ter ajudado
@edymbhify
@edymbhify 2 жыл бұрын
Show de bola!
@baltaio
@baltaio 2 жыл бұрын
💜
@SergeCABA
@SergeCABA 2 жыл бұрын
o RefreshToken ao contrário do Token normal ele persiste no banco de dados e precisa sempre atualizado a cada requisição? ou é necessario colocar uma lógica para ele atualizar o refreshtoken faltando X tempo para o token original expirar para evitar sobrecarga nas requisições?
@baltaio
@baltaio 2 жыл бұрын
O RefreshToken é apenas uma chave extra, usada para gerar um token válido, já expirado!
@JoaoRoberto-mm4qj
@JoaoRoberto-mm4qj 2 жыл бұрын
Esse tópico é mto bom e mais complexo do que parece
@baltaio
@baltaio 2 жыл бұрын
@augustoalbuquerque
@augustoalbuquerque Жыл бұрын
Olá Balta, primeiramente parabéns pelos vídeos!! Curtos e direto ao ponto. Uma dúvida que vc comentou sobre armazenar o token. Pra vc, onde seria o melhor lugar para armazenar o token? Pois hoje eu armazeno no localstorange. A cada requisição eu válido se o token está válido.
@baltaio
@baltaio Жыл бұрын
LocalStorage 💜💜
@WalisonSoares
@WalisonSoares 2 жыл бұрын
Eu estou com uma dúvida relacionada a esse refresh token. Se a chave do JWT já me garante que aquele token foi criado pela minha aplicação, porque eu preciso de um refresh token? No meu modo de ver, isso leva a uma falha de segurança! O que é que eu ainda não consegui enxergar em relação ao refresh token? Qual a real necessidade dele? Eu não poderia simplesmente verificar a expiração do JWT na próxima requisição do usuário e caso estivesse próximo de expirar renovar aquele JWT? Não é mais ou menos essa a lógica das sessions?
@baltaio
@baltaio 2 жыл бұрын
O refresh token é uma chave extra, que assim como o Token, se cair nas mãos erradas, permite impersonar o usuário... Os dois tem issues de segurança, depende de como você armazena eles...
@WalisonSoares
@WalisonSoares 2 жыл бұрын
@@baltaio obrigado pelo retorno! O que eu imagino é que, vc definindo uma data de expiração do JWT não vejo porque ter o refresh token, pois se o usuário não fizer nenhuma requisição em por exemplo 15 minutos (aqui estou pesando semelhante ao funcionamento das sessions) na requisição no minuto 16 por exemplo o token dele estará vencido e consequentemente a "sessão" dele cairá, necessitando de um novo login. Como o JWT tem que ser decodificado e validado a cada requisição, nesse momento pode ser identificado que o JWT está próximo do vencimento e já renova-lo. E porque eu disse que o refresh token pra mim traz uma falha na segurança? Porque se o JWT na minha abordagem expirar e cair em mãos erradas, ele já terá perdido a validade e boas! Já na abordagem do refresh token se o JWT e o refresh token cair em mãos erradas, mesmo com o JWT vencido, o atacante conseguirá gerar um novo JWT com o refresh token. Obs.: Não é uma crítica a forma que está sendo feito tah? Só estou tentando entender o porquê do refresh token.
@rafaelberto729
@rafaelberto729 Жыл бұрын
@@WalisonSoares entendo que para um frontend onde o usuário usar por horas, a cada token vencido você teria que descer no banco para recuperar usuário e senha para gerar um novo token. Isso se sua atenticação estiver sendo feita por usuários e não por aplicação, claro.
@WalisonSoares
@WalisonSoares Жыл бұрын
@@rafaelberto729 Eu já tenho o JWT, não precisaria autenticar o usuário novamente. Bastaria renovar o tempo de expiração do JWT gerando um novo JWT. Não entendi o sentido de trabalhar com 2 tokens. O JWT e o refresh token.
@bobmarley8334
@bobmarley8334 Жыл бұрын
@@WalisonSoares mano, vc ia precisar fazer o login de novo. entrando com seu usuario e senha. com o refresh token, o front end se re-autentica e voce nao precisa digitar login e senha de novo. entendeu?
@fredimachadonet
@fredimachadonet 3 жыл бұрын
Top demais! Valeu pelo teu conteúdo!
@FuinhaAlbinaR6
@FuinhaAlbinaR6 Жыл бұрын
Uma pergunta, eu poderia em vez de salvar esse refresh token, criar um token criptografado que estaria retornando dentro do token , e esse mesmo refresh token retornando normal ali no json? Ou ficaria algo meio estranho de se pensar
@baltaio
@baltaio Жыл бұрын
O que vem no token é apenas uma chave... não outro token...
@diogoaguiar8087
@diogoaguiar8087 3 жыл бұрын
Parabéns
@baltaio
@baltaio 3 жыл бұрын
Obrigado 😃
@andremesquita5587
@andremesquita5587 Жыл бұрын
Balta, vc poderia mostrar um exemplo de como gerar e validar um token com múltiplos Roles? Se alguém ver essa minha mensagem, poderia me informar onde acho isso?
@baltaio
@baltaio Жыл бұрын
Opa, mostro sim!
@rpreviato
@rpreviato 2 жыл бұрын
Deixa eu perguntar, é possível fazer algo parecido quando se usa autenticação por cookie? Eu estou precisando fazer uma implementação que é invalidar a sessão anterior do usuário quando ele faz login em um novo local. Eu acredito que para fazer isso eu preciso criar um token com uma expiração bem pequena, diria até de minutos, e daí a aplicação sempre vai estar gerando um token novo através do refresh-token, mas tem um custo de fazer um token expirar rápido né, tem outra técnica para fazer isso?
@baltaio
@baltaio 2 жыл бұрын
Com certeza! É o modelo padrão que o ASP.NET usa (Não APIs)...
2 жыл бұрын
o que fazer se vc precisa revogar o acesso de um usuário que já tem o token antes do vencimento do token? Tipo revogar um role ou um claim?
@baltaio
@baltaio 2 жыл бұрын
Armazenar o Token e comparar o enviado com o armazenado a cada requisição para ver se ainda é válido!
@leothomzz
@leothomzz 3 жыл бұрын
Muito legal o vídeo...Balta, alguma possibilidade de você fazer um módulo nos seus cursos pagos ensinando a implementar essa parte de validação de forma robusta?! Talvez até integrando back com front...sempre que planejo alguns projetos pessoais, ou de estudo mesmo, fico muito inseguro com relação à segurança...um módulo destes, ajudaria demais a entendermos o passo a passo de como tornar uma autenticação/autorização realmente segura.
@baltaio
@baltaio 3 жыл бұрын
Já está no curso novo de ASP.NET 6 que sai em novembro!
@leothomzz
@leothomzz 3 жыл бұрын
@@baltaio sempre a frente de seu tempo haha. Obrigado Dr. Não vejo a hora!
@baltaio
@baltaio 3 жыл бұрын
💜
@andreymonteirohl
@andreymonteirohl 3 жыл бұрын
Excelente esse vídeo! Eu tenho uma dúvida: Eu quero configurar meu token para expirar em 2h, porém enquanto o usuário estiver em atividade deve manter a autenticação. Se ele ficar 2h sem qualquer interação com a api ai sim ele expira... Eu faço isso apenas com Refresh Token? Ou tem alguma outra forma? Pergunto isso porque imagino que o front end terá que sempre fazer 2 requisições: 1 para o refresh token e outra para o método desejado (GET, POST, etc). Muito obrigado pelo conteúdo!
@baltaio
@baltaio 3 жыл бұрын
Não, você pode a cada requisição renovar este token... gerar um token novo e armazenar! É uma estratégia!
@diadetediotedio6918
@diadetediotedio6918 2 жыл бұрын
Não daria pra armazenar o refresh token diretamente como uma informação do JWT? Como ele é assinado com uma chave privada forjar os dados dentro do JWT seria criptograficamente impossível, então a integridade dos dados como foram criados seria assegurada pela própria assinatura
@baltaio
@baltaio 2 жыл бұрын
Acho que daria sim... nunca pensei desta forma, obrigado... vale um teste hein :D
@torrescle
@torrescle 3 жыл бұрын
Balta, fiquei com uma dúvida. Pode me dizer um cenário em que o front-end requisita esse end-point de gerar um novo token a partir do refresh token? Tipo por um setTimeout pra fazer essa requisição a cada x horas seria uma abordagem interessante?
@baltaio
@baltaio 3 жыл бұрын
Pode ser um timeout ou mesmo gerar um tken novo a cada requisição e ter um tempo de expiração menor
@igorandrade7979
@igorandrade7979 3 жыл бұрын
Balta, Como conseguirmos fazer endpoint d validação do token nas aplicações consumidoras deste Server de Auth?
@baltaio
@baltaio 3 жыл бұрын
Só criar um método com o atributo Authorize que retorna o valor que vc precisar...
@diegolobo7952
@diegolobo7952 3 жыл бұрын
Vlw Balta
@baltaio
@baltaio 3 жыл бұрын
💜
@rdgfarias
@rdgfarias 2 жыл бұрын
Top man, vlw demais
@baltaio
@baltaio 2 жыл бұрын
Obrigado 💜
@luan_maik
@luan_maik 3 жыл бұрын
Seria conveniente que no frontend tivesse um setInterval() para a cada X tempo fazer uma requisição de refreshToken e em seguida atualiza-se o token no LocalStorage ?
@baltaio
@baltaio 3 жыл бұрын
Já fiz isto uma vez... é uma saída mas não vejo como a melhor...
@diegorocha2186
@diegorocha2186 2 жыл бұрын
No meu app com vue3 e axios, eu crio interceptadores para o request, assim que eu tentar acessar uma rota e o retorno for algo como 401, eu simplesmente envio um request para renovar o access token com o refresh token e em seguida tento repetir a operação, se esta falhar novamente, eu excluo o refresh token e redireciono o user para a tela de login, sendo que eu não tenho mais nada a fazer. Assim você persiste o usuário logado entre sessões, criando uma experiência de usuário bacana, mais ou menos como você tem com suas contas google por exemplo.
@luan_maik
@luan_maik 2 жыл бұрын
@@diegorocha2186 pensei que quando o token expirava não dava mais para fazer o refresh.
@diegorocha2186
@diegorocha2186 2 жыл бұрын
@@luan_maik Eu tinha feito uma resposta muito mais completa aqui, mas por alguma razão o youtube apagou o comentário, basicamente você precisa entender que existe uma diferença entre refresh token e access token.
@evertontomazi
@evertontomazi 2 жыл бұрын
Tive um erro com o token, posso postar aqui ? é com relação a data parece que o jwt esta pegando uma data que não é do meu computador.
@baltaio
@baltaio 2 жыл бұрын
Provavlemente UTC!
@evertontomazi
@evertontomazi 2 жыл бұрын
@@baltaio sim. Eu estava vendo outro vídeo sobre refrestoken. Mas não apliquei ainda. Obrigado pelo conteúdo.
@diegorocha2186
@diegorocha2186 2 жыл бұрын
Opa Balta, sobre essa técnica que você usa pra gerar um novo token a partir do access token não expirado, não poderia ser uma falha de segurança? Porque se o token for roubado da maquina do usuário o cracker/hacker tecnicamente consegue manter o token vivo pra sempre requisitando o endpoint de renovação, uma vez que mesmo com o logout do user o token vai continuar válido. Eu geralmente uso um access token com tempo bem baixo de expiração (15 minutos) e mantenho o refresh token do user no meu banco de dados, quando o usuário faz logout eu simplesmente excluo o refresh token do db e em 15 minutos o access token não vai mais ter validade.
@baltaio
@baltaio 2 жыл бұрын
Se o token é a hash forem roubados já era! Mas não tem outra forma de gerar um token a partir de outro token expirado... é o risco que se corre... por isto vários lugares não tem refresh token
@adrianoalves1836
@adrianoalves1836 2 жыл бұрын
​@@baltaio No caso não seria mais recomendado salvar a hash em um banco associando a id do usuário e ao passar o token ele faz a validação para fazer o refresh caso seja necessário?
@joaovictordepaularamos6360
@joaovictordepaularamos6360 3 жыл бұрын
Balta é possível subir uma API de Autenticação e utilizar o Token gerado por essa API para ter acesso as outras APIs? Estou um pouco travado com relação a Key. Como as demais APIs vão conseguir ler este Token? Desde já agradeço.
@baltaio
@baltaio 3 жыл бұрын
Sim é possível! Você pode ter um Endpoint que valida o token e que outras APIs podem consumir... Porém neste cenário, o que você procura pode ser algo parecido com Identity Server ou Keycloak
@josiasalmeida2981
@josiasalmeida2981 2 жыл бұрын
Link do repositório?????????
@baltaio
@baltaio 2 жыл бұрын
github.com/andrebaltieri
@vintage_lol
@vintage_lol Жыл бұрын
Balta, já te disseram que tu podia facilmente imitar o Vinheteiro?
@baltaio
@baltaio Жыл бұрын
Que honra!!!
🕊️Valera🕊️
00:34
DO$HIK
Рет қаралды 2 МЛН
How I Turned a Lolipop Into A New One 🤯🍭
00:19
Wian
Рет қаралды 9 МЛН
Implementando Refresh Token utilizando JWT
45:23
André Secco
Рет қаралды 4,2 М.
icg-2024-lab-01
1:05:43
Josef Pelikán
Рет қаралды 73
ASP.NET and JWT Refresh Tokens
30:43
Coding Tutorials
Рет қаралды 10 М.
AutoMapper e ASP.NET Core 6: mapeamento de objetos
18:22
Next Wave Education
Рет қаралды 15 М.
REFRESH TOKEN DA FORMA CERTA
19:39
desenvolvedor.io
Рет қаралды 24 М.
Blazor: Login com Google | por André Baltieri #balta
23:45
ASP.NET Validações Customizadas
20:32
balta.io
Рет қаралды 12 М.
🕊️Valera🕊️
00:34
DO$HIK
Рет қаралды 2 МЛН