Faça a gestão da aplicação OAuth

Este guia mostra como gerir integrações de aplicações baseadas no OAuth com o Google Cloud.

A um nível elevado, para integrar uma aplicação baseada no OAuth, faz o seguinte:

  1. Crie um cliente OAuth.
  2. Crie uma credencial do cliente OAuth.
  3. Na credencial do cliente OAuth, obtenha o segredo do cliente. Para saber mais sobre os riscos associados ao armazenamento e acesso ao segredo do cliente, bem como as estratégias que podem ajudar a mitigá-los, consulte o artigo Riscos de segurança e mitigações do cliente e das credenciais do OAuth.

Depois de concluir estes passos, a aplicação baseada em OAuth pode aceder a Google Cloud produtos e dados.

Antes de começar

  1. Tem de ter uma Google Cloud organização configurada.

  2. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

    gcloud init

    Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

  3. Tem de ter configurado um Workforce Identity Pool e um fornecedor na organização na qual vai registar a aplicação OAuth. Saiba como configurar a federação de identidade da força de trabalho para o Microsoft Entra ID, o Okta e outros fornecedores OIDC e SAML 2.0.

Funções necessárias

Para receber as autorizações de que precisa para registar uma aplicação OAuth para a sua organização, peça ao seu administrador para lhe conceder a função de administrador de clientes OAuth do IAM (roles/iam.oauthClientAdmin) do IAM no projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Faça a gestão dos clientes OAuth

Esta secção mostra como gerir clientes OAuth.

Crie um cliente OAuth

Para criar um cliente OAuth, faça o seguinte:

gcloud

gcloud iam oauth-clients create APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --client-type="CONFIDENTIAL_CLIENT" \
    --display-name="My OAuth application" \
    --description="An application registration for MyApp" \
    --allowed-scopes="https://www.googleapis.com/auth/cloud-platform" \
    --allowed-redirect-uris="REDIRECT_URI" \
    --allowed-grant-types="authorization_code_grant"

Substitua o seguinte:

  • APP_OAUTH_CLIENT_ID: um ID de cliente para representar este cliente OAuth.
  • PROJECT_ID: o ID do projeto onde criou o Workload Identity Pool e o fornecedor. O projeto tem de ser criado na organização onde o seu pool de força de trabalho e fornecedor foram criados.
  • REDIRECT_URI: o URI de redirecionamento para a aplicação OAuth, por exemplo, https://myapp.com/signin-callback.

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{ \
        'allowedGrantTypes': ['AUTHORIZATION_CODE_GRANT'], \
        'allowedRedirectUris': ['REDIRECT_URI'], \
        'allowedScopes': ['https://www.googleapis.com/auth/cloud-platform'], \
        'clientType': 'CONFIDENTIAL_CLIENT', \
        'description': 'My OAuth client description', \
        'disabled': false, \
        'displayName': 'My OAuth client'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients\?oauthClientId\=APP_OAUTH_CLIENT_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde criou o Workload Identity Pool e o fornecedor. O projeto tem de ser criado na organização onde o seu pool de força de trabalho e fornecedor foram criados.
  • REDIRECT_URI: o URI de redirecionamento para a aplicação OAuth, por exemplo, https://myapp.com/signin-callback.
  • APP_OAUTH_CLIENT_ID: um ID de cliente para representar este cliente OAuth.

Depois de registar a aplicação, crie a credencial do cliente OAuth e obtenha o segredo que a aplicação OAuth usa para aceder Google Cloud.

Liste os clientes OAuth

Para apresentar uma lista de clientes OAuth registados, execute o seguinte comando:

gcloud

gcloud iam oauth-clients list \
    --project=PROJECT_ID \
    --location=global

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients

Substitua PROJECT_ID pelo ID do projeto onde as suas aplicações OAuth estão registadas.

Descreva um cliente OAuth

Para descrever um cliente OAuth, execute o seguinte comando:

gcloud

gcloud iam oauth-clients describe APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

Substitua o seguinte:

  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que quer descrever
  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que quer descrever

Atualize um cliente OAuth

Para atualizar um cliente OAuth, execute o seguinte comando.

gcloud

gcloud iam oauth-clients update APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global \
    --allowed-redirect-uris="REDIRECT_URI"

Substitua o seguinte:

  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth do cliente OAuth que quer atualizar
  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • REDIRECT_URI: o URI de redirecionamento para a aplicação OAuth

Para atualizar outros campos, use as flags indicadas em gcloud iam oauth-clients update.

REST

curl -d'{"allowedRedirectUris":"REDIRECT_URI"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID?update_mask=allowed_redirect_uris

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth do cliente OAuth que quer atualizar
  • REDIRECT_URI: o URI de redirecionamento para o cliente OAuth

Para atualizar outros campos, defina update_mask para os nomes dos campos indicados em gcloud iam oauth-clients update.

Elimine um cliente OAuth

Para eliminar um cliente OAuth, execute o seguinte comando:

gcloud

gcloud iam oauth-clients delete APP_OAUTH_CLIENT_ID \
    --project PROJECT_ID \
    --location global

Substitua o seguinte:

  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth a eliminar
  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth a eliminar

Faça a gestão das credenciais do cliente OAuth

Esta secção mostra-lhe como gerir as credenciais do cliente OAuth para o cliente OAuth.

Crie uma credencial de cliente OAuth

Para criar uma credencial do cliente OAuth, execute o seguinte comando:

gcloud

gcloud iam oauth-clients credentials create APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --display-name='My OAuth client credential' \
    --location='global'

Substitua o seguinte:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: um ID que representa esta credencial do cliente
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth que pode obter descrevendo a aplicação cliente OAuth registada

REST

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  -d "{'disabled': false, 'displayName': 'My OAuth client credential'}" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials\?oauthClientCredentialId=APP_OAUTH_CLIENT_CREDENTIAL_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth que pode obter descrevendo a aplicação cliente OAuth registada
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: um ID que representa esta credencial do cliente

Liste as credenciais do cliente OAuth

Para listar as credenciais do cliente OAuth, execute o seguinte comando:

gcloud

gcloud iam oauth-clients credentials list \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --project=PROJECT_ID \
    --location=global

Substitua o seguinte:

  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth para o qual listar as credenciais
  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/$PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth para o qual listar as credenciais

Descreva uma credencial do cliente OAuth

Para descrever uma credencial do cliente OAuth, execute o seguinte comando. Pode obter o segredo do cliente inspecionando o resultado.

gcloud

gcloud iam oauth-clients credentials describe APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location='global'

Substitua o seguinte:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o URI de redirecionamento para o cliente OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth que pode obter descrevendo o registo da aplicação cliente

REST

curl \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o URI de redirecionamento para o cliente OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth que pode obter descrevendo o registo da aplicação cliente

No resultado, clientSecret é o segredo do cliente. Este é o segredo que a aplicação OAuth usa para aceder a Google Cloud.

Atualize uma credencial do cliente OAuth

Para atualizar uma credencial do cliente OAuth, execute o seguinte comando:

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --client-id=APP_OAUTH_CLIENT_ID \
    --display-name="My new credential name" \
    --location=global

REST

curl -d'{"displayName":"My new credential name"}' -X PATCH \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o URI de redirecionamento para o cliente OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth que pode obter descrevendo o registo da aplicação cliente

Desative uma credencial do cliente OAuth

Antes de poder eliminar uma credencial de cliente OAuth, tem de a desativar. Para desativar a credencial do cliente OAuth, execute o seguinte comando:

gcloud

gcloud iam oauth-clients credentials update APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --disabled \
    --project=PROJECT_ID \
    --location=global

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID das credenciais do cliente a desativar

REST

curl -d'{"disabled":"true"}' \
  -H "Content-Type: application/json" -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=disabled

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID de cliente OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID das credenciais do cliente a desativar

Elimine uma credencial do cliente OAuth

Para eliminar uma credencial do cliente OAuth, execute o seguinte comando:

gcloud

gcloud iam oauth-clients credentials delete APP_OAUTH_CLIENT_CREDENTIAL_ID \
    --project=PROJECT_ID \
    --oauth-client=APP_OAUTH_CLIENT_ID \
    --location=global

Substitua o seguinte:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID de cliente OAuth
  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID da credencial do cliente

REST

curl -X DELETE \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "X-Goog-User-Project: PROJECT_ID" \
  https://iam.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID

Substitua o seguinte:

  • PROJECT_ID: o ID do projeto onde registou a sua aplicação OAuth
  • APP_OAUTH_CLIENT_ID: o ID da credencial do cliente
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID de cliente OAuth

O que se segue?