Como criar de maneira programática clientes OAuth para o IAP

Esta página descreve como criar de maneira programática clientes OAuth para uso com o IAP, permitindo que você configure o IAP de maneira programática de ponta a ponta para aplicativos internos.

Limitações conhecidas

Existem algumas limitações conhecidas para clientes OAuth criados de maneira programática:

  • Os clientes OAuth criados pela API só podem ser modificados usando a API. Se você criá-lo usando a API, não será possível modificar um cliente OAuth pelo Console do Cloud.
  • Apenas 500 clientes OAuth são permitidos por projeto ao usar a API.
  • As marcas da tela de consentimento OAuth criadas pela API têm limitações específicas. Consulte a seção abaixo para mais informações.

Como entender as marcas e o estado da marca

A tela de consentimento OAuth, que contém informações de marca para os usuários, é conhecida como marca. As marcas podem ser limitadas a usuários internos ou públicos. Uma marca interna torna o fluxo OAuth acessível para alguém que pertença à mesma organização do espaço de trabalho do Google que o projeto. Uma marca pública disponibiliza o fluxo OAuth para qualquer pessoa na Internet.

As marcas podem ser criadas manual ou programaticamente por meio de uma API. As marcas criadas pela API são definidas automaticamente com configurações diferentes:

  • Elas são definidos como internas e devem ser definidas manualmente como públicas, se desejado
  • Elas são definidos como um estado "não revisado" e uma avaliação de marca deve ser acionada

Para definir manualmente uma marca interna como pública:

  1. Abra a tela de consentimento do OAuth.
  2. Selecione o projeto desejado no menu suspenso.
  3. Na página tela de consentimento do OAuth, observe que o Tipo de usuário é definido automaticamente como Interno. Para defini-lo como Público, clique em Editar aplicativo. Mais opções de configuração estão disponíveis.
  4. Em tipo de aplicativo, clique em Público.

Para acionar uma revisão de marca para uma marca criada pela API sem revisão:

  1. Abra a tela de consentimento do OAuth.
  2. Selecione o projeto desejado no menu suspenso.
  3. Na página Tela de consentimento do OAuth, insira as informações necessárias e clique em Enviar para verificação.

O processo de verificação pode levar algumas semanas. Enviaremos atualizações do progresso por e-mail. Saiba mais sobre a verificação. Enquanto o processo de verificação estiver em andamento, você ainda poderá usar o aplicativo na sua organização do Google Workspace. Saiba mais sobre como seu aplicativo se comportará antes de ser verificado.

Antes de começar

Antes de criar um cliente, primeiro verifique se o autor da chamada recebeu as seguintes permissões:

  • clientauthconfig.brands.list
  • clientauthconfig.brands.create
  • clientauthconfig.brands.get
  • clientauthconfig.clients.create
  • clientauthconfig.clients.listWithSecrets
  • clientauthconfig.clients.getWithSecret
  • clientauthconfig.clients.delete
  • clientauthconfig.clients.update

Essas permissões estão incluídas nos papéis básicos de editor (roles/editor) e de proprietário (roles/owner). No entanto, em vez de usar esses papéis, recomendamos que você crie um papel personalizado que contenha essas permissões e o conceda ao autor da chamada.

Configurar o OAuth para IAP

Veja nas etapas a seguir como configurar a tela de consentimento e criar um cliente oauth para IAP.

  1. Verifique se você já tem uma marca usando o comando list. É possível ter apenas uma marca por projeto.

    gcloud alpha iap oauth-brands list
    

    Veja um exemplo de resposta do gcloud, se a marca existir:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    
  2. Se não houver marca, use o comando create:

    gcloud alpha iap oauth-brands create --application_title=APPLICATION_TITLE --support_email=SUPPORT_EMAIL
    

    Os campos acima são obrigatórios ao chamar esta API:

    • supportEmail: o e-mail de suporte exibido na tela de consentimento do OAuth. Esse endereço de e-mail pode ser um endereço de usuário ou um alias dos Grupos do Google. Embora as contas de serviço também tenham um endereço de e-mail, elas não são endereços de e-mail válidos e não podem ser usadas ao criar uma marca. No entanto, uma conta de serviço pode ser a proprietária de um Grupo do Google. Crie um novo Grupo do Google ou configure um grupo existente e defina a conta de serviço desejada como proprietário do grupo.

    • applicationTitle: o nome do aplicativo exibido na tela de consentimento do OAuth.

    A resposta contém os seguintes campos:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_ID]
    applicationTitle: [APPLICATION_TITLE]
    supportEmail: [SUPPORT_EMAIL]
    orgInternalOnly: true
    

Como criar um cliente OAuth do IAP

  1. Use o comando create para criar um cliente. Use a marca name da etapa anterior.

    gcloud alpha iap oauth-clients create projects/PROJECT_ID/brands/BRAND-ID --display_name=NAME
    

    A resposta contém os seguintes campos:

    name: projects/[PROJECT_NUMBER]/brands/[BRAND_NAME]/identityAwareProxyClients/[CLIENT_ID]
    secret: [CLIENT_SECRET]
    displayName: [NAME]
    
  2. Use o ID do cliente (client_id no exemplo acima) e secret para ativar o IAP. Consulte os tópicos a seguir para obter mais informações sobre como ativar o IAP usando as credenciais que você acabou de criar:

Como realizar a autenticação

Depois que o IAP é configurado para um aplicativo, todas as solicitações precisam ser autenticadas. As etapas a seguir descrevem como acessar um aplicativo protegido por IAP de maneira programática.

Autenticação de usuário final

Depois de seguir as etapas acima, consulte este tópico para mais informações sobre como autenticar usando o OAuth 2.0. Certifique-se de solicitar um token de atualização para permitir a automação. O consentimento manual durante o fluxo OAuth é obrigatório. No entanto, o token de atualização pode ser usado para obter tokens de acesso atualizados de maneira programática.

Contas de serviço e gcloud

Para autenticar usando uma conta de serviço e a gcloud:

  1. Crie uma conta de serviço e conceda a ela as permissões necessárias.
  2. Crie uma chave de conta de serviço, fazendo o download para o caminho desejado.
  3. Execute o seguinte comando gcloud, especificando o caminho para a chave da conta de serviço:

    gcloud auth activate-service-account [ACCOUNT-NAME]
        --key-file=/path/to/service-key.json --project=[PROJECT_ID]
    
  4. Faça solicitações de API usando gcloud auth print-access-token:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
        https://iap.googleapis.com/v1/projects/[PROJECT_ID_OR_NUMBER]/brands