O que é um Refresh Token? Renovando o Acesso Sem Novo Login
Um refresh token é uma credencial de longa duração que permite a uma aplicação obter access tokens novos e de curta duração sem forçar o usuário a fazer login de novo.
Um refresh token resolve uma tensão no OAuth: os access tokens devem ser de curta duração para limitar o dano caso vazem, mas forçar o usuário a fazer login a cada poucos minutos é incômodo. O refresh token preenche essa lacuna, gerando silenciosamente novos access tokens em segundo plano. Por ser de longa duração, ele também é um alvo de alto valor.
Access tokens versus refresh tokens
Um access token é o que você apresenta para chamar uma API; ele expira rapidamente. Um refresh token é mantido em sigilo pelo cliente e trocado no servidor de autorização por um novo access token quando o antigo expira. Os dois têm tempos de vida e usos muito diferentes.
Como o fluxo de refresh funciona
- O cliente obtém um access token e um refresh token no login.
- Ele usa o access token até que expire.
- Ele envia o refresh token para obter um novo access token, sem necessidade de interação do usuário.
Por que esse design é mais seguro
Access tokens de curta duração limitam a janela em que um token vazado é útil. O refresh token fica fora do tráfego de API, sendo trocado apenas no servidor de autorização, então é exposto muito menos vezes do que o access token que ele renova.
Protegendo o refresh token
Como ele pode gerar access tokens por um longo tempo, um refresh token roubado é algo sério. Sistemas bons o armazenam com segurança, o vinculam ao cliente e usam rotação: cada uso emite um novo refresh token e invalida o antigo, de modo que o roubo é detectável.
Refresh tokens em CI/CD
Integrações de longa duração entre sua plataforma de CI e outros serviços podem depender de refresh tokens para se manterem conectadas. Trate-os como segredos de alto valor: criptografe em repouso, restrinja o acesso e revogue prontamente quando uma integração for removida.
Pipelines preferem não ter token permanente
Para acesso por job em um pipeline, o padrão moderno evita completamente refresh tokens armazenados, gerando credenciais na hora via OIDC. Não há nada de longa duração para proteger, porque cada job começa limpo e termina limpo em um runner efêmero.
Principais conclusões
- Um refresh token gera novos access tokens de curta duração sem novo login.
- Ele é de longa duração e de alto valor, então deve ser armazenado com segurança e, idealmente, rotacionado.
- O acesso por job em um pipeline pode dispensar tokens armazenados, gerando credenciais via OIDC.