Programmatisch auf Nicht-Google-Ressourcen zugreifen

In diesem Artikel wird gezeigt, wie Sie programmatisch auf eine Ressource zugreifen können, die durch Identity-Aware Proxy (IAP) mithilfe von externen Identitäten geschützt ist.

Dies kann in folgenden Situationen hilfreich sein:

  • Ihre Front-End-Anwendung nutzt die Identity Platform direkt. Ihr Back-End-API-Server wird mit App Engine erstellt und durch IAP mit externen Identitäten geschützt.

  • Ihre Anwendung ist für die Verwendung in einer nicht herkömmlichen Browserumgebung wie Android, iOS oder in der Befehlszeile konzipiert. Dabei ist eine Browserweiterleitung zur Authentifizierung von Nutzern nicht möglich.

Auf Ressourcen zugreifen

So greifen Sie programmatisch auf eine Ressource zu:

  1. Rufen Sie das ID-Token des Nutzers ab.

    Node.js

    Achten Sie darauf, dass der Nutzer angemeldet ist. Der folgende Code zeigt ein einfaches Beispiel für die Anmeldung eines Nutzers mit einer E-Mail-Adresse und einem Passwort:

    // 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.
      });
    

    Sie können dann ein ID-Token für das Objekt user abrufen:

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

    REST

    Beim Aufrufen von signInWithPassword wird ein ID-Token in der Antwort zurückgegeben:

    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. Fügen Sie dem Autorisierungs-Header das ID-Token hinzu, wenn Sie einen durch IAP geschützten Endpunkt aufrufen.

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