Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 17, 2022 03:46 pm GMT

Refresh Tokens: equilibrando segurana e usabilidade em aplicaes!

Photo by FLY:D on Unsplash

Sumrio

  • Introduo
  • Problema
  • Soluo: refresh tokens!
    • O que um access token?
    • O que um refresh token?
  • Autenticao com refresh token
  • Finalizando...

Introduo

E ae dev, tudo bem com voc?

Hoje vamos falar especificamente de uma das camadas mais utilizadas num fluxo "moderno" de autenticao. Voc j ouviu falar de Refresh Tokens? Em resumo, "tokens de atualizao" so credenciais utilizadas para obter credenciais/tokens de acesso. Complicado?

Calma fica comigo, pega um caf e garanta sua leitura!

Bora pro post?

Problema

Vamos criar uma cenrio hipottico mas muito comum para quem est lidando com autenticao de aplicaes. Imagine que um usurio queira acessar uma aplicao. Essa aplicao por sua vez possui uma tela de login onde o usurio precisar se autenticar para ento acessar toda a parte interna da aplicao: dashboards, meu perfil, e etc.

Por questes de segurana, no momento em que o usurio se autenticou, foi definido que o tempo de sesso mnimo seja de apenas 5 minutos. O usurio ento (sempre que expira a sua sesso) perde o acesso ao sistema, e deve inserir suas credenciais novamente para continuar navegando.

evidente que o nosso usurio acaba tendo uma pssima experincia ao utilizar o nosso sistema...

Tendo isso em vista, conversamos com o time de segurana sobre aumentarmos o tempo de durao da sesso, mas isso implicaria em deixarmos a nossa aplicao menos segura para o nosso usurio...

Sendo assim, como evitar que os usurios tenham que realizar o login sempre que a sesso expire? Como equilibrar a segurana e a usabilidade na nossa aplicao?

Soluo: refresh tokens!

Primeiro, vamos entender um pouco do fluxo de autenticao que temos at ento.

Basic authentication flow

O Client envia um usurio e senha para o servidor de autorizao, as credenciais estando vlidas o servidor devolve um access_token para o Client. O Client pode (e deve) utilizar o access_token nas requisies protegidas para as APIs. As APIs protegidas validam o access_token e devolvem o recurso solicitado pelo Client.

Com o fluxo atual, inevitvel que o usurio tenha a experincia que falamos antes. Isto porque as APIs protegidas verificam sempre se o access_token vlido, para ento devolver o recurso pro usurio.

Precisamos melhorar esse fluxo, incluindo o mecanismo de refresh_token!

Vamos primeiro entender qual a diferena entre um access_token e de um refresh_token.

O que um access token?

O access token um JWT (JSON Web Tokens) que utilizado pelo usurio para acessar as aplicaes e os recursos protegidos. Esse token codificado (no encriptado) e carrega algumas informaes presentes no Header, Payload e Signature (sees que compe a estrutura base de um token JWT).

Geralmente ele possui um tempo de vida til curto.

jwt.io: JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.

O que um refresh token?

O refresh token um token utilizado para "renovar a sesso" de um usurio. Atravs dele podemos solicitar ao servidor de autorizao para que seja gerado um novo access token sem ter que pedir ao usurio que ele se logue novamente (desde que o token de atualizao seja vlido e no tenha expirado).

importante entender que:

  • Ele possui um tempo de vida til maior do que o access_token;
  • um token apenas para gerar um novo token de acesso. No pode ser utilizado para acessar a aplicao. Porm, se expirado, o usurio deve realizar o login novamente;
  • Alguns IdPs (Identity Providers) utilizam o refresh token pra revogar as sesses ativas do usurio.

Estando claras as diferenas, vamos adaptar o nosso fluxo de autenticao!

Autenticao com refresh token

Basic authentication flow: with refresh tokens

No novo fluxo o Client, toda vez que tiver uma solicitao rejeitada pela API protegida, deve solicitar ao servidor de autorizao um novo token de acesso (utilizando o refresh token na solicitao). O servidor de autorizao valida a solicitao (verificando se o refresh token est vlido e no expirado) e concede ao Client o token de acesso.

Verificando as alteraes no novo fluxo de autenticao:

  • Alm de retornar o access_token, tambm retornamos o refresh_token durante o login do usurio (no POST /auth/login);
  • Adicionamos um nova rota no Authorization Server para possibilitar que o Client possa renovar a sua sesso (o POST /auth/refresh);

Finalizando...

Bem, isso, por hoje, s!

Quero te agradecer por chegar at aqui, e queria lhe pedir tambm para me encaminhar as suas dvidas, comentrios, crticas, correes ou sugestes sobre a publicao.

Deixe seu se gostou ou um se esse post te ajudou de alguma maneira! No se esquea de ver os posts anteriores e me siga para maaaais contedos.

At!


Original Link: https://dev.to/wnqueiroz/refresh-tokens-equilibrando-seguranca-e-usabilidade-em-aplicacoes-c6c

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To