本文說明如何使用外部身分,以程式輔助方式存取受 Identity-Aware Proxy (IAP) 保護的資源。
您可能在下列情況需要這麼做:
您的前端應用程式直接使用 Identity Platform。後端 API 伺服器是使用 App Engine 建構而成,並透過 IAP 和外部身分進行保護。
您的應用程式適用於非傳統的瀏覽器環境,例如 Android、iOS 或指令列,無法使用瀏覽器重新導向來驗證使用者。
存取資源
如要使用服務帳戶 JWT 以程式輔助方式存取資源,請參閱「使用服務帳戶 JWT 進行驗證」。
如要透過 ID 權杖以程式輔助方式存取資源,請按照下列步驟操作:
擷取使用者的 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 }'呼叫受 IAP 保護的端點時,請在授權標頭中加入 ID 權杖。
curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"