Trocar tokens com a API Cloud OAuth

Neste guia, descrevemos como trocar credenciais externas, códigos de autorização ou tokens de atualização por tokens de acesso Google Cloud usando a API Cloud OAuth (cloudoauth.googleapis.com) em integrações da federação de identidade da força de trabalho.

Antes de começar

  1. Configure um pool e um provedor de identidade da força de trabalho. Para mais informações, consulte Configurar a federação de identidade de colaboradores.
  2. Registre um cliente OAuth e crie credenciais de cliente. Para mais informações, consulte Gerenciar aplicativos OAuth.
  3. Ative a API Cloud OAuth.

    Funções necessárias para ativar APIs

    Para ativar APIs, você precisa da permissão serviceusage.services.enable. Se você criou o projeto, provavelmente já tem essa permissão com o papel de Proprietário (roles/owner). Caso contrário, é possível receber essa permissão com o papel de Administrador do Service Usage (roles/serviceusage.serviceUsageAdmin). Saiba como conceder papéis.

    Ativar a API

Métodos de autenticação

A API Cloud OAuth é compatível com dois métodos de autenticação de cliente:

  • Autenticação básica HTTP (recomendada): transmita o ID do cliente e a chave secreta do cliente codificados em Base64 no cabeçalho Authorization:

    -H "Authorization: Basic $(echo -n 'CLIENT_ID:CLIENT_SECRET' | base64)"
    
  • Parâmetros do corpo da solicitação: transmita os parâmetros client_id e client_secret no corpo da solicitação.

Trocar um código de autorização por tokens

Para trocar um código de autorização Google Cloud por um token de acesso e um token de atualização, envie uma solicitação HTTP POST:

  • Endpoint com escopo de organização (de locatário único)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

    Credenciais do corpo da solicitação

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=authorization_code" \
    --data-urlencode "code=AUTHORIZATION_CODE" \
    --data-urlencode "redirect_uri=REDIRECT_URI" \
    --data-urlencode "client_id=CLIENT_ID" \
    --data-urlencode "client_secret=CLIENT_SECRET"
    

Substitua:

  • BASE64_ENCODED_CREDENTIALS: a string codificada em Base64 de CLIENT_ID:CLIENT_SECRET.
  • AUTHORIZATION_CODE: o código de autorização emitido por Google Cloud.
  • REDIRECT_URI: o URI de redirecionamento configurado no cliente OAuth.
  • ORGANIZATION_ID: o ID da organização numérico da sua organização Google Cloud.
  • CLIENT_ID: seu ID do cliente OAuth registrado.
  • CLIENT_SECRET: sua chave secreta do cliente OAuth.

Atualizar um token de acesso

Quando um token de acesso expira, use o tipo de concessão refresh_token para conseguir um novo token de acesso de curta duração:

  • Endpoint com escopo de organização (de locatário único)

    curl -X POST https://cloudoauth.googleapis.com/v1/organizations/ORGANIZATION_ID/token \
    -H "Authorization: Basic BASE64_ENCODED_CREDENTIALS" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "grant_type=refresh_token" \
    --data-urlencode "refresh_token=REFRESH_TOKEN" \
    --data-urlencode "redirect_uri=REDIRECT_URI"
    

Substitua REFRESH_TOKEN pelo token de atualização que o endpoint de token retornou anteriormente.

Campos de resposta de token

Quando uma troca de token é bem-sucedida, a API Cloud OAuth retorna um status HTTP 200 OK que contém os seguintes campos:

Campo Tipo Descrição
access_token string O token de acesso do OAuth 2.0 emitido pela API Cloud OAuth para chamar as APIs Google Cloud .
refresh_token string O token de atualização usado para receber novos tokens de acesso quando o token atual expira.
expires_in integer O tempo restante de vida útil do token de acesso em segundos (normalmente 3599).
token_type string O tipo de token (por exemplo, Bearer).
scope string A lista de escopos associados ao token.
id_token string O token de ID do OIDC que contém declarações de identidade autenticadas.

Para informações sobre respostas de erro retornadas pela API Cloud OAuth, consulte Erros de troca de token da API Cloud OAuth.

A seguir