Como acessar recursos que não são do Google de maneira programática

Este artigo mostra como acessar um recurso protegido pelo Identity-Aware Proxy (IAP) de maneira programática usando identidades externas.

Há várias situações em que convém fazer isso, como as seguintes:

  • Seu aplicativo de front-end usa o Identity Platform diretamente. O servidor da API de back-end foi criado usando o App Engine e protegido pelo IAP usando identidades externas.

  • Seu aplicativo foi projetado para ser usado em um ambiente de navegador não tradicional, como no Android, iOS ou linha de comando, em que não é possível usar o redirecionamento do navegador para autenticar usuários.

Como acessar recursos

Para acessar um recurso de maneira programática, siga estas etapas:

  1. Recupere o token de ID do usuário.

    Node.js

    Verifique se o usuário está conectado. O código abaixo mostra um exemplo simples de login de usuário com e-mail e senha:

    // If signing in using project-level email/password IdP.
    // auth.tenantId = null; // This is null by default.
    // For signing in to a specific tenant using email/password.
    auth.tenantId = 'myTenantId';
    auth.signInWithEmailAndPassword(email, password)
      .then((user) => {
        // User signed in. ID token can now be retrieved.
      })
      .catch((error) => {
        // Handler error.
      });
    

    Depois, recupere um token de ID no objeto user:

    user.getIdToken()
      .then((idToken) => {
        // idToken is now available and can be sent to API server.
      })
      .catch((error) => {
        // Handler error.
      });
    

    REST

    Chame signInWithPassword para retornar um token de ID na resposta:

    curl 'https://identitytoolkit.googleapis.com/v1/accounts:signInWithPassword?key=API-KEY' \
    -H 'Content-Type: application/json' \
    --data-binary '{
      "email":"EMAIL",
      "password":"PASSWORD",
      "returnSecureToken":true,
      "tenantId":"TENANT-ID" # Only used in multi-tenancy
      }'
  2. Inclua o token de ID no cabeçalho de autorização ao chamar um endpoint protegido pelo IAP.

    curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"