Gerenciar o aplicativo OAuth

Neste guia, mostramos como gerenciar integrações de aplicativos baseadas em OAuth com o Google Cloud.

Em um nível alto, para integrar um aplicativo baseado em OAuth, faça o seguinte:

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

Depois de concluir essas etapas, o aplicativo baseado em OAuth poderá acessar produtos e dados do Google Cloud.

Antes de começar

  1. Você precisa ter uma organização do Google Cloud configurada.

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

  3. Você precisa ter configurado um pool e um provedor de identidade da força de trabalho na organização em que vai registrar o aplicativo OAuth. Saiba como configurar a federação de identidade da força de trabalho para o ID do Microsoft Entra, o Okta e outros provedores OIDC e SAML 2.0.

Funções exigidas

Para receber as permissões necessárias para registrar um aplicativo OAuth para sua organização, peça ao administrador para conceder a você o papel do IAM de Administrador do cliente OAuth do IAM (roles/iam.oauthClientAdmin) no projeto. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Também é possível conseguir as permissões necessárias por meio de papéis personalizados ou de outros papéis predefinidos.

Gerenciar clientes OAuth

Esta seção mostra como gerenciar clientes OAuth.

Crie um cliente OAuth2

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:

  • APP_OAUTH_CLIENT_ID: um ID do cliente para representar esse cliente OAuth.
  • PROJECT_ID: o ID do projeto em que você criou o pool de identidade e o provedor da força de trabalho. O projeto precisa ser criado na organização em que o pool de forças de trabalho e o provedor foram criados.
  • REDIRECT_URI: o URI de redirecionamento do aplicativo 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:

  • PROJECT_ID: o ID do projeto em que você criou o pool de identidade e o provedor da força de trabalho. O projeto precisa ser criado na organização em que o pool de forças de trabalho e o provedor foram criados.
  • REDIRECT_URI: o URI de redirecionamento do aplicativo OAuth. Por exemplo, https://myapp.com/signin-callback.
  • APP_OAUTH_CLIENT_ID: um ID do cliente para representar esse cliente OAuth.

Depois de registrar o aplicativo, crie a credencial do cliente OAuth e receba a chave secreta que o aplicativo OAuth usa para acessar o Google Cloud.

Listar clientes OAuth

Para listar os clientes OAuth registrados, 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 em que seus apps OAuth estão registrados.

Descrever 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:

  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que você quer descrever
  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo 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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que você quer descrever

Atualizar um cliente OAuth

Para atualizar um cliente OAuth, execute o comando a seguir.

gcloud

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

Substitua:

  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth para o cliente OAuth que você quer atualizar
  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • REDIRECT_URI: o URI de redirecionamento para o aplicativo OAuth

Para atualizar outros campos, use as flags listadas 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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth para o cliente OAuth que você quer atualizar
  • REDIRECT_URI: o URI de redirecionamento do cliente OAuth

Para atualizar outros campos, defina update_mask como os nomes de campo listados em gcloud iam oauth-clients update.

Excluir um cliente OAuth

Para excluir um cliente OAuth, execute o seguinte comando:

gcloud

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

Substitua:

  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth a ser excluído
  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo 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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth a ser excluído

Gerenciar credenciais do cliente OAuth

Esta seção mostra como gerenciar as credenciais do cliente OAuth para o cliente OAuth.

Criar uma credencial de cliente OAuth

Para criar uma credencial de 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:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: um ID que representa essa credencial do cliente
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que pode ser obtido descrevendo o aplicativo cliente OAuth registrado.

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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que pode ser obtido descrevendo o aplicativo cliente OAuth registrado.
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: um ID que representa essa credencial do cliente

Listar credenciais de 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:

  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth para listar credenciais
  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo 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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth para listar credenciais

Descrever uma credencial de cliente OAuth

Para descrever uma credencial de cliente OAuth, execute o seguinte comando. É possível obter a chave secreta do cliente inspecionando a saída.

gcloud

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

Substitua:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o URI de redirecionamento para o cliente OAuth
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que você pode conseguir descrevendo o registro do aplicativo 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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o URI de redirecionamento para o cliente OAuth
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que você pode conseguir descrevendo o registro do aplicativo cliente.

Na saída, clientSecret é a chave secreta do cliente. Esse é o segredo que o aplicativo OAuth usa para acessar o Google Cloud.

Atualizar uma credencial de cliente OAuth

Para atualizar uma credencial de 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://staging-iam.sandbox.googleapis.com/v1/projects/PROJECT_ID/locations/global/oauthClients/APP_OAUTH_CLIENT_ID/credentials/APP_OAUTH_CLIENT_CREDENTIAL_ID?update_mask=display_name

Substitua:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o URI de redirecionamento para o cliente OAuth
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth que pode ser recebido descrevendo o registro do aplicativo cliente.

Desativar uma credencial de cliente OAuth

Antes de excluir uma credencial de cliente OAuth, é necessário desativá-la. 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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID da credencial do cliente a ser desativado

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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID do cliente OAuth
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID da credencial do cliente a ser desativado

Excluir uma credencial de cliente OAuth

Para excluir uma credencial de 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:

  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID do cliente OAuth
  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo 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:

  • PROJECT_ID: o ID do projeto em que você registrou seu aplicativo OAuth.
  • APP_OAUTH_CLIENT_ID: o ID da credencial do cliente
  • APP_OAUTH_CLIENT_CREDENTIAL_ID: o ID do cliente OAuth

A seguir