O que é a rotação do token de atualização e por que é importante?
Vamos mergulhar e falar sobre por que a rotação do token de atualização é uma maneira eficaz de proteger a segurança dos seus tokens de atualização.
O que é um token de atualização?
O token de atualização é um tipo especial de token que é usado para obter um novo token de acesso quando o token de acesso atual expira. Confira nosso post anterior Entendendo os tokens no OIDC para saber mais.
Durante a introdução, também mencionamos que no Logto, para proteger a segurança do seu token de atualização, implementamos um mecanismo de "rotação do token de atualização" por padrão.
Mas o que exatamente é a "rotação do token de atualização"? Como ela beneficia nossos usuários finais? Vamos explorar!
O que é a rotação do token de atualização?
A rotação do token de atualização é um mecanismo que invalida o token de atualização anterior e emite um novo quando o token de atualização é usado para obter um novo token de acesso. Este mecanismo garante que o token de atualização seja renovado antes que expire.
Por que precisamos da rotação do token de atualização?
Os tokens de atualização têm uma duração prolongada, geralmente em semanas ou até meses. E já que podemos obter novos tokens de acesso pelo token de atualização, o token de atualização se torna um alvo atraente para atacantes também. Portanto, de acordo com o OAuth 2.0 BCP, o servidor de autorização deve tomar uma das seguintes medidas para prevenir tais ataques.
- Emissão de tokens de atualização vinculados ao remetente: o cliente assina e fornece uma assinatura (
Sec-Token-Binding
) no cabeçalho da requisição de atualização, de modo que o token de atualização emitido seja criptograficamente vinculado a um cliente específico. No entanto, apenas alguns dos clientes nativos são vinculados ao remetente atualmente, e a maioria das SPAs modernas e clientes móveis são públicos. - Rotação do token de atualização: o servidor de autorização emite um novo token de atualização (tipicamente ao trocar por um novo token de acesso) e invalida o anterior. Isso mitiga o risco de vazamento de token.
Melhores práticas para implementar a rotação do token de atualização
No Logto, quando um usuário consegue fazer login com sucesso, um objeto Grant
será criado primeiro no banco de dados, e o token de atualização emitido posteriormente terá uma referência grantId
e apontará para o primeiro objeto Grant.
Sempre que ocorre uma rotação do token de atualização, o token de atualização anterior será marcado como consumido, e o servidor de autorização do Logto emitirá um novo token de atualização com o mesmo grantId
.
Vamos supor que o token de atualização anterior foi vazado, então ou o cliente legítimo ou o atacante teria usado para trocar um token de acesso. E não importa quem fez isso, o token de atualização vazado já deve ter sido rotacionado e marcado como consumido. Um deles que usou o token de atualização consumido em segundo lugar informará o servidor de autorização sobre a violação. O servidor de autorização revogará todos os tokens de atualização com o mesmo grantId
.
No caso acima, após acionar o alarme, o cliente legítimo só poderá se reautenticar por meio do fluxo de login novamente para obter um novo token de atualização. O atacante, por outro lado, perderá o controle do seu sistema e será bloqueado.
Quando ocorre a rotação do token de atualização?
No Logto, o comportamento padrão de uma rotação do token de atualização define:
- Se o cliente é restrito ao remetente ou não é público (por exemplo, aplicações web de renderização no lado do servidor), então a rotação do token de atualização ocorre quando atinge 70% do seu tempo total de vida (TTL).
- Se o cliente é um cliente público (por exemplo, aplicações web de página única), a rotação do token de atualização ocorre toda vez que ele é usado para trocar por um token de acesso. A resposta da troca de token retornará tanto um novo token de acesso quanto um novo token de atualização.
Como posso ativar/desativar a rotação do token de atualização no Logto?
No console administrativo do Logto, vá para Console Administrativo > Aplicações e selecione a aplicação que deseja alternar a rotação do token de atualização. Na página de detalhes da aplicação, acesse a aba “Configurações avançadas” e role para baixo até o final, onde você encontrará a opção de alternância junto com algumas outras configurações úteis.
Se você desligar a opção, seu token de atualização nunca será rotacionado até expirar. Portanto, recomendamos fortemente que sempre ative a rotação do token de atualização.
Recapitulação: O que é a rotação do token de atualização e por que é importante?
A rotação do token de atualização é uma prática recomendada que garante a segurança do token de atualização em sua aplicação. Ela invalida o token de atualização anterior e emite um novo quando o token de atualização é usado para obter um novo token de acesso. Este mecanismo mitiga o risco de vazamento de token e garante a segurança do seu token de atualização.
O Logto segue as melhores práticas líderes do setor e sempre coloca a segurança do usuário como prioridade máxima.
Espero que este blog tenha esclarecido suas dúvidas sobre o mecanismo de rotação do token de atualização. Deixe-nos saber se ainda há algo não claro. Seus comentários e sugestões são sempre bem-vindos!
Experimente o Logto hoje e adote uma experiência de autenticação mais segura.