透過程式存取非 Google 資源

本文說明如何使用外部身分,以程式輔助方式存取受 Identity-Aware Proxy (IAP) 保護的資源。

您可能在下列情況需要這麼做:

  • 您的前端應用程式直接使用 Identity Platform。後端 API 伺服器是使用 App Engine 建構而成,並透過 IAP 和外部身分進行保護。

  • 您的應用程式適用於非傳統的瀏覽器環境,例如 Android、iOS 或指令列,無法使用瀏覽器重新導向來驗證使用者。

存取資源

如要使用服務帳戶 JWT 以程式輔助方式存取資源,請參閱「使用服務帳戶 JWT 進行驗證」。

如要透過 ID 權杖以程式輔助方式存取資源,請按照下列步驟操作:

  1. 擷取使用者的 ID 權杖。

    Node.js

    確認使用者已登入。下列程式碼簡單示範如何使用電子郵件地址和密碼登入使用者:

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

    接著,您可以在 user 物件上擷取 ID 權杖:

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

    REST

    呼叫 signInWithPassword 會在回應中傳回 ID 權杖:

    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. 呼叫受 IAP 保護的端點時,請在授權標頭中加入 ID 權杖。

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