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:
- Crie um cliente OAuth.
- Crie uma credencial do cliente OAuth.
- 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
Tem de ter uma Google Cloud organização configurada.
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.
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 descreverPROJECT_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 OAuthAPP_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 atualizarPROJECT_ID
: o ID do projeto onde registou a sua aplicação OAuthREDIRECT_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 OAuthAPP_OAUTH_CLIENT_ID
: o ID de cliente OAuth do cliente OAuth que quer atualizarREDIRECT_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 eliminarPROJECT_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 OAuthAPP_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 clienteAPP_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 OAuthAPP_OAUTH_CLIENT_ID
: o ID de cliente OAuth que pode obter descrevendo a aplicação cliente OAuth registadaAPP_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 credenciaisPROJECT_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 OAuthAPP_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 OAuthAPP_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 OAuthAPP_OAUTH_CLIENT_CREDENTIAL_ID
: o URI de redirecionamento para o cliente OAuthAPP_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 OAuthAPP_OAUTH_CLIENT_CREDENTIAL_ID
: o URI de redirecionamento para o cliente OAuthAPP_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 OAuthAPP_OAUTH_CLIENT_ID
: o ID de cliente OAuthAPP_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 OAuthAPP_OAUTH_CLIENT_ID
: o ID de cliente OAuthAPP_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 OAuthPROJECT_ID
: o ID do projeto onde registou a sua aplicação OAuthAPP_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 OAuthAPP_OAUTH_CLIENT_ID
: o ID da credencial do clienteAPP_OAUTH_CLIENT_CREDENTIAL_ID
: o ID de cliente OAuth
O que se segue?
- Saiba mais sobre o Identity-Aware Proxy com a federação de identidade da força de trabalho