Autenticação programática

Este documento descreve como autenticar um recurso protegido pelo IAP a partir de uma conta de utilizador ou uma conta de serviço.

O acesso programático refere-se à chamada de aplicações protegidas pela IAP a partir de clientes que não são navegadores, como ferramentas de linha de comandos, chamadas de serviço para serviço e aplicações para dispositivos móveis. Consoante o seu exemplo de utilização, pode querer autenticar-se no IAP através de credenciais de utilizador ou credenciais de serviço.

  • Uma conta de utilizador pertence a um utilizador individual. Autentica uma conta de utilizador quando a sua aplicação requer acesso a recursos protegidos pelo IAP em nome de um utilizador. Para mais informações, consulte o artigo Contas de utilizador.

  • Uma conta de serviço representa uma aplicação em vez de um utilizador individual. Autentica uma conta de serviço quando quer permitir que uma aplicação aceda aos seus recursos protegidos pelo IAP. Para mais informações, consulte o artigo Contas de serviço.

As IAP suportam os seguintes tipos de credenciais para acesso programático:

  • Token de ID do OAuth 2.0: um token emitido pela Google para um utilizador humano ou uma conta de serviço com a reivindicação de público-alvo definida como o ID do recurso da aplicação IAP.
  • JWT assinado da conta de serviço: um token JWT autoassinado ou emitido pela Google para uma conta de serviço.

Inclua estas credenciais para IAP no cabeçalho HTTP Authorization ou Proxy-Authorization do pedido.

Antes de começar

Antes de começar, certifique-se de que tem uma aplicação protegida pela IAP que quer ligar programaticamente através de uma conta de programador, uma conta de serviço ou credenciais de app para dispositivos móveis.

Autentique uma conta de utilizador

Pode ativar o acesso do utilizador à sua aplicação a partir de uma app para computador ou dispositivo móvel para permitir que um programa interaja com um recurso protegido por uma CNA.

Autentique a partir de uma app para dispositivos móveis

  1. Crie ou use um ID de cliente OAuth 2.0 existente para a sua app para dispositivos móveis. Para usar um ID de cliente OAuth 2.0 existente, siga os passos em Como partilhar clientes OAuth. Adicione o ID de cliente OAuth à lista de autorizações para acesso programático à aplicação.
  2. Obtenha um token de ID para o ID de cliente OAuth 2.0 do recurso protegido por IAP.
  3. Inclua o token de ID num cabeçalho Authorization: Bearer para fazer o pedido autenticado ao recurso protegido pelo IAP.

Autentique a partir de uma app para computador

Esta secção descreve como autenticar uma conta de utilizador a partir de uma linha de comandos do computador.

  1. Para permitir que os programadores acedam à sua aplicação a partir da linha de comandos, crie um ID de cliente OAuth 2.0 para computador ou partilhe um ID de cliente OAuth para computador existente.
  2. Adicione o ID do OAuth à lista de autorizações para acesso programático para a aplicação.

Inicie sessão na aplicação

Cada programador tem de iniciar sessão para aceder a uma app protegida por IAP. Pode incluir o processo num script, por exemplo, usando a CLI gcloud. O exemplo seguinte usa o curl para iniciar sessão e gerar um token que pode ser usado para aceder à aplicação:

  1. Inicie sessão na sua conta com acesso ao recurso Google Cloud .
  2. Inicie um servidor local que possa repetir os pedidos recebidos.

      # Example using Netcat (http://netcat.sourceforge.net/)
      nc -k -l 4444
    
  3. Aceda ao seguinte URI, onde DESKTOP_CLIENT_ID é o ID do cliente da app para computador:

      https://accounts.google.com/o/oauth2/v2/auth?client_id=DESKTOP_CLIENT_ID&response_type=code&scope=openid%20email&access_type=offline&redirect_uri=http://localhost:4444&cred_ref=true
    
  4. Na saída do servidor local, procure os parâmetros do pedido:

      GET /?code=CODE&scope=email%20openid%20https://www.googleapis.com/auth/userinfo.email&hd=google.com&prompt=consent HTTP/1.1
    
  5. Copie o valor CODE para substituir CODE no seguinte comando, juntamente com o ID de cliente e o segredo da app para computador:

      curl --verbose \
        --data client_id=DESKTOP_CLIENT_ID \
        --data client_secret=DESKTOP_CLIENT_SECRET \
        --data code=CODE \
        --data redirect_uri=http://localhost:4444 \
        --data grant_type=authorization_code \
        https://oauth2.googleapis.com/token
    

    Este comando devolve um objeto JSON com um campo id_token que pode usar para aceder à aplicação.

Aceda à aplicação

Para aceder à app, use o id_token:

curl --verbose --header 'Authorization: Bearer ID_TOKEN' URL

Símbolo de atualização

Pode usar o token de atualização gerado durante o fluxo de início de sessão para obter novos tokens de ID. Isto é útil quando o token de ID original expira. Cada token de ID é válido durante cerca de uma hora, durante a qual pode fazer vários pedidos a uma app específica.

O exemplo seguinte usa o curl para usar o token de atualização para obter um novo token de ID. Neste exemplo, REFRESH_TOKEN é o token do fluxo de início de sessão. DESKTOP_CLIENT_ID e DESKTOP_CLIENT_SECRET são os mesmos que os usados no fluxo de início de sessão:

curl --verbose \
  --data client_id=DESKTOP_CLIENT_ID \
  --data client_secret=DESKTOP_CLIENT_SECRET \
  --data refresh_token=REFRESH_TOKEN \
  --data grant_type=refresh_token \
  https://oauth2.googleapis.com/token

Este comando devolve um objeto JSON com um novo campo id_token que pode usar para aceder à app.

Autentique uma conta de serviço

Pode usar um JWT de conta de serviço ou um token OpenID Connect (OIDC) para autenticar uma conta de serviço com um recurso protegido pelo IAP. A tabela seguinte descreve algumas das diferenças entre os diferentes tokens de autenticação e as respetivas funcionalidades.

Funcionalidades de autenticação JWT da conta de serviço Token OpenID Connect
Suporte do acesso sensível ao contexto
Requisito do ID de cliente OAuth 2.0
Âmbito do token URL do recurso protegido pelo IAP ID de cliente OAuth 2.0

Autentique com um JWT de conta de serviço

O IAP suporta a autenticação JWT de contas de serviço para identidades Google, Identity Platform e aplicações configuradas com a federação de identidades da força de trabalho.

A autenticação de uma conta de serviço através de um JWT envolve os seguintes passos: