Visão geral da API Cloud OAuth

A API Cloud OAuth (cloudoauth.googleapis.com) fornece troca de tokens e autenticação do OAuth 2.0 e do OpenID Connect (OIDC) para a federação de identidade de colaboradores.

A API Cloud OAuth autentica usuários do Google Cloud . Essa API permite que seus aplicativos redirecionem os usuários para o endpoint de autorização (https://auth.cloud.google/authorize) para receber códigos de autorização. Seus aplicativos podem trocar credenciais externas, códigos de autorização ou tokens de atualização por tokens de acesso OAuth 2.0 de curta duração e tokens de ID do OIDC.

A API é baseada nas especificações OAuth 2.0 Token Exchange (RFC 8693) e OAuth 2.0 Authorization Framework (RFC 6749).

Comparação com o Security Token Service

Historicamente,o Security Token Service (sts.googleapis.com) do Google Cloud lidava com a troca de tokens para a federação de identidade de colaboradores e a federação de identidade da carga de trabalho.

A API Cloud OAuth é compatível com as mesmas trocas de token que o Security Token Service, mas é dedicada ao tráfego da federação de identidade de colaboradores. Essa separação isola as trocas de tokens de força de trabalho do tráfego de carga de trabalho, o que ajuda a evitar interrupções entre serviços e permite que a capacidade da força de trabalho seja escalonada de forma independente do Security Token Service. Dependendo do status da integração, siga estas diretrizes:

  • Novas integrações: redirecione os usuários para o endpoint de autorização (https://auth.cloud.google/authorize) e troque tokens usando a API Cloud OAuth (cloudoauth.googleapis.com).
  • Integrações atuais: se você usa o Security Token Service (sts.googleapis.com/v1/oauthtoken ou sts.googleapis.com/v1/token), faça a transição para cloudoauth.googleapis.com.

Pontos de extremidade compatíveis

A tabela a seguir lista os endpoints usados nas integrações da API Cloud OAuth. A maioria desses endpoints tem escopo de organização (locatário único) e fornece gerenciamento e descoberta de chaves isolados quando o aplicativo cliente e os recursos são restritos a uma única organização do Google Cloud.

Nos URLs de endpoint com escopo da organização, substitua ORGANIZATION_ID pelo ID numérico da organização do Google Cloud:

Endpoint Método URL Descrição
Descoberta do OpenID Connect GET https://auth.cloud.google/oidc/organizations/ORGANIZATION_ID/.well-known/openid-configuration Retorna os metadados de configuração do provedor do OpenID Connect Discovery 1.0 (documento de descoberta) para a organização.
Autorização GET https://auth.cloud.google/authorize Redireciona os usuários federados para fazer login com o provedor de identidade (IdP) e retorna um código de autorização para o URI de redirecionamento do aplicativo.
Troca de token POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token Troca códigos de autorização ou tokens de atualização por tokens de acesso do OAuth 2.0 e tokens de ID do OIDC.
Conjunto de chaves da Web JSON (JWKS) GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/.well-known/jwks.json Retorna as chaves públicas JSON Web (JWKs) usadas para verificar as assinaturas dos tokens de ID do OIDC emitidos para a organização.
Informações do usuário GET https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/userinfo Recupera declarações padrão do OIDC, declarações de diretório personalizadas e associações de grupo para o usuário autenticado.
Grupos corporativos GET https://cloudoauth.googleapis.com/v1/common/groups Recupera as associações paginadas de grupos empresariais do usuário autenticado.

Endpoint de autorização

Em um fluxo de código de autorização do OAuth 2.0 e do OIDC, seu aplicativo redireciona os usuários federados para o endpoint de autorização unificado do Google Cloud (https://auth.cloud.google/authorize) para fazer login com o IdP. Depois que a autenticação é concluída, o endpoint de autorização redireciona o usuário para o URI de redirecionamento do aplicativo com um código de autorização. Em seguida, o aplicativo troca esse código por tokens no endpoint de troca de tokens.

Endpoints de descoberta do OIDC e JWKS

Para integrações do OIDC do Looker, a API Cloud OAuth fornece endpoints públicos, não autenticados e com escopo de organização para configuração do cliente e verificação de token:

  • Endpoint de descoberta do OpenID Connect: fornece os metadados de configuração do provedor do OpenID Connect Discovery 1.0 (documento de descoberta) para a organização. O documento de descoberta inclui o identificador issuer da organização e os URLs de endpoint (authorization_endpoint, token_endpoint, userinfo_endpoint e jwks_uri). Ele também lista os escopos, as declarações, os algoritmos de assinatura (RS256) e os métodos de desafio de código (S256) da Proof Key for Code Exchange (PKCE) compatíveis.
  • Endpoint do conjunto de chaves da Web JSON (JWKS): fornece o conjunto de chaves da Web JSON (JWKS) público para a organização. Os aplicativos usam as chaves da Web JSON (JWKs) públicas na matriz keys para verificar a assinatura criptográfica de um token de ID do OIDC (id_token) emitido pela API Cloud OAuth.

Em uma integração típica do OIDC, seu aplicativo usa esses endpoints na seguinte sequência:

  1. Busque o documento de descoberta: envie uma solicitação GET para o endpoint de descoberta do OpenID Connect (/.well-known/openid-configuration) e leia os URLs do endpoint (authorization_endpoint, token_endpoint, jwks_uri e userinfo_endpoint).
  2. Solicitar um código de autorização: redirecione o usuário para o authorization_endpoint (https://auth.cloud.google/authorize) para fazer login com o IdP dele e receber um código de autorização no URI de redirecionamento do aplicativo.
  3. Trocar o código de autorização por tokens: envie uma solicitação POST para o token_endpoint (/token) para trocar o código de autorização por um token de acesso do OAuth 2.0 e um token de ID do OIDC (id_token).
  4. Verificar o token de ID: busque as chaves públicas da organização no jwks_uri (/.well-known/jwks.json) e use-as para verificar a assinatura criptográfica do id_token.
  5. Opcional: recuperar informações do usuário: envie uma solicitação GET com o token de acesso para o userinfo_endpoint (/userinfo) para recuperar outras declarações de perfil de usuário e associações de grupo.

A seguir