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:
- Crie um cliente OAuth
- Crie uma credencial de cliente OAuth.
- 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
Você precisa ter uma organização do Google Cloud configurada.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
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 descreverPROJECT_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 atualizarPROJECT_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 atualizarREDIRECT_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ídoPROJECT_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 clienteAPP_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 credenciaisPROJECT_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 OAuthAPP_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 OAuthAPP_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 OAuthAPP_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 OAuthAPP_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 OAuthAPP_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 OAuthPROJECT_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 clienteAPP_OAUTH_CLIENT_CREDENTIAL_ID
: o ID do cliente OAuth
A seguir
- Saiba mais sobre o Identity-Aware Proxy com a federação de identidade da força de trabalho