Skip to content
Latchkey

O que é OAuth 2.0? Acesso delegado sem compartilhar senhas

O OAuth 2.0 é um framework de autorização que permite que um aplicativo acesse recursos em nome de um usuário sem nunca ver a senha desse usuário.

O OAuth 2.0 é o protocolo que impulsiona o "Entrar com o GitHub" e a maior parte do acesso entre aplicativos na web. Ele permite conceder a um aplicativo de terceiros acesso limitado e revogável aos seus recursos por meio da emissão de um token, nunca da sua senha. Em CI/CD, o OAuth e seus tokens sustentam a forma como integrações e pipelines obtêm acesso com escopo a hosts de código-fonte e serviços de nuvem.

O problema que o OAuth resolve

Antes do OAuth, compartilhar acesso significava entregar sua senha, dando ao outro aplicativo controle total e nenhuma forma fácil de revogá-lo. O OAuth substitui isso por um token que tem escopo, é expirável e revogável, de modo que você concede apenas o necessário.

Os papéis centrais

  • Resource owner: o usuário que é dono dos dados.
  • Client: o aplicativo que solicita acesso.
  • Authorization server: emite tokens após o consentimento.
  • Resource server: guarda os dados e aceita o token.

A troca de tokens

O client redireciona o usuário para o authorization server, o usuário consente, e o server retorna um authorization code. O client troca esse code por um access token (e frequentemente por um refresh token). O client então apresenta o access token ao resource server a cada requisição.

Autorização, não autenticação

O OAuth 2.0 trata de autorização delegada, não de provar identidade. O OpenID Connect adiciona uma camada de identidade sobre o OAuth para lidar com a autenticação. Tratar um access token OAuth bruto como prova de identidade é um antipadrão bem conhecido.

OAuth em CI/CD

Conectar uma plataforma de CI ou um bot ao seu host de código-fonte normalmente usa um fluxo OAuth que produz um token com escopo. Pipelines modernos também usam fluxos derivados do OAuth, como o OIDC, para gerar tokens de curta duração por job, evitando totalmente segredos de longa duração armazenados.

Mantendo os tokens seguros

Os tokens OAuth são credenciais bearer: quem quer que possua um pode usá-lo. Eles devem ser armazenados criptografados, ter escopo estreito e nunca ser registrados em log. Em runners efêmeros (como os runners gerenciados da Latchkey), um token usado durante um job é destruído junto com o ambiente quando o job termina.

Principais conclusões

  • O OAuth 2.0 concede acesso com escopo e revogável via tokens em vez de senhas compartilhadas.
  • Ele lida com autorização; o OpenID Connect adiciona autenticação por cima.
  • Os access tokens são credenciais bearer e devem ter escopo definido, ser criptografados e nunca registrados em log.

Guias relacionados