本文說明如何透過程式碼存取受 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"