Nesta página, explicamos como compartilhar um cliente OAuth com outro app na sua organização.
Visão geral
O compartilhamento de clientes OAuth entre projetos elimina a necessidade de criar manualmente um novo cliente OAuth para cada app na sua organização. Assim, é possível atribuir o cliente a vários apps de forma programática.
O compartilhamento do cliente OAuth também é usado para compartilhar um cliente OAuth com agentes que se você quer ativar o Identity-Aware Proxy (IAP), mas não ter acesso à página Credenciais.
O compartilhamento com o cliente OAuth também é usado quando o aplicativo usa uma cliente OAuth para o fluxo do navegador, e você quer ativar o acesso programático ao o aplicativo.
Antes de começar
Para criar um novo cliente OAuth, conclua as etapas em criação do cliente OAuth ou use um cliente OAuth existente.
Acesso programático
Esta seção descreve as etapas para ativar um cliente OAuth para acesso programático ao seu aplicativo.
Adicionar clientes OAuth à lista de permissões para acesso programático.
É possível colocar na lista de permissões uma lista de IDs do cliente OAuth que pertencem à sua organização e você quer conceder acesso programático ao aplicativo.
É possível adicionar os clientes OAuth à lista de permissões em recursos e serviços no nível da organização, do projeto e da pasta.
gcloud
Execute o comando a seguir para preparar um arquivo
SETTING_FILE
. Atualize os valores conforme necessário.cat << EOF > SETTING_FILE access_settings: oauth_settings: programmatic_clients: ["clientId1", "clientId2", ..] EOF
Use o comando
gcloud iap settings set
para autorizar os clientes OAuth de um nível específico.gcloud iap settings set
SETTING_FILE
[--organization=ORGANIZATION --folder=FOLDER --project=/PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSIONExemplos de comandos:
Para adicionar IDs de cliente OAuth à lista de permissões nos recursos de uma organização, execute o comando a seguir.
gcloud iap settings set
SETTING_FILE
--organization=ORGANIZATIONPara adicionar IDs do cliente OAuth à lista de permissões nos recursos de uma pasta, execute o comando a seguir.
gcloud iap settings set
SETTING_FILE
--folder=FOLDERPara permitir a lista de permissões de IDs de cliente OAuth em todos os recursos do tipo Web em um projeto, execute o seguinte comando.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=iap_webPara adicionar IDs do cliente OAuth à lista de permissões de um serviço do App Engine em um projeto, execute o comando a seguir.
gcloud iap settings set
SETTING_FILE
--project=PROJECT --resource-type=app-engine --service=SERVICESubstitua:
- FOLDER: o ID da pasta.
- ORGANIZATION: o ID da organização.
- PROJECT: o ID do projeto.
- RESOURCE_TYPE: o tipo de recurso do IAP. Precisa ser
app-engine
,iap_web
,compute
,organization
oufolder
. - SERVICE: o nome do serviço. Isso é opcional quando
resource-type
écompute
ouapp-engine
. - VERSION: o nome da versão. Isso não se aplica a
compute
e é opcional quandoresource-type
éapp-engine
.
API
Execute o comando a seguir para preparar um arquivo
iap_settings.json
. Atualize os valores conforme necessário.cat << EOF > iap_settings.json { "access_settings": { "oauth_settings": { programmatic_clients: ["clientId1", "clientId2", ..] } } } EOF
Receba o nome do recurso executando o comando
gcloud iap settings get
. Copie o campo de nome da saída.
Você precisará do nome na etapa a seguir.gcloud iap settings get [--organization=ORGANIZATION --folder=FOLDER --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICE --version=VERSION]
Substitua
RESOURCE_NAME
no comando a seguir pelo nome da etapa anterior. OIapSettings
será atualizado.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.oauthSettings.programmaticClients"
Faça login no aplicativo usando qualquer um dos IDs de cliente OAuth da lista de permissões. Consulte Autenticação programática.
Acesso por navegador
Para permitir que o IAP use o ID e a chave secreta do cliente usando o console do Google Cloud, siga estas instruções.
- Configurar o cliente OAuth para Compute Engine
- Configurar o cliente OAuth para o Google Kubernetes Engine (GKE)
- Configurar o cliente OAuth para o App Engine
- Configurar o cliente OAuth para o Cloud Run
Riscos
Compartilhar um cliente entre seus aplicativos é conveniente, mas há riscos. Nesta seção, descrevemos os riscos potenciais ao compartilhar clientes e como minimizá-los.
Ponto único de falha
Usar um cliente OAuth para muitos apps cria um ponto único de falha. Se um cliente for excluído ou modificado incorretamente, todos os aplicativos que usam esse cliente serão afetados.
Para minimizar esse problema, somente compartilhe clientes se for realmente necessário usar clientes compartilhados no caso de uso.
Vazamentos de chaves secretas do cliente
Compartilhar um cliente requer o compartilhamento da chave secreta dele com pessoas e scripts, o que aumenta o risco de vazamento. O IAP não consegue diferenciar entre os tokens criados a partir do seu app ou de uma chave secreta que vazou.
O acesso aos recursos do IAP pode ser monitorado com o Cloud Audit Logging. Se você acredita que a chave secreta do cliente possa ter vazado, redefina-a na página "Credenciais".
Para mitigar esse risco, proteja as chaves secretas do cliente como uma senha. Evite compartilhá-las e nunca as armazene como texto simples.
Falsificação de identidade de usuários autorizados
Se a chave secreta do cliente vazar, um app mal-intencionado poderá definir o cookie do navegador de autenticação do IAP no seu domínio para se passar por um usuário autorizado. Com esse cookie, o IAP autentica o usuário falsificado em todos os apps que compartilham a chave que vazou.
Para reduzir esse risco, evite compartilhar clientes entre recursos que também compartilham usuários autorizados. Defina permissões por recurso para garantir que o IAP não autorize o acesso, mesmo que um usuário falsificado seja autenticado.
Coleta de identidade do usuário
Se a chave secreta do cliente vazar, um app mal-intencionado poderá usar o ID do cliente para coletar as identidades dos usuários do seu aplicativo. Esse comportamento é acionado quando seus usuários visitam o app malicioso.
Quando um usuário acessa um app protegido pelo IAP pela primeira vez, ele é solicitado a compartilhar a identidade com o aplicativo. Isso proporciona controle aos usuários sobre as informações pessoais deles. Quando um usuário autoriza o compartilhamento da identidade, o sistema de login do Google registra esse consentimento. O IAP não pedirá a autorização do usuário novamente em solicitações posteriores de nenhum ID do cliente no mesmo projeto.
Assim, se um usuário tiver autorizado o compartilhamento da identidade no seu app e visitar o app mal-intencionado, sua identidade será imediatamente compartilhada sem o consentimento dele.