במאמר הזה נסביר איך לגשת באופן פרוגרמטי למשאב שמוגן על ידי שרת proxy לאימות זהויות (IAP) באמצעות זהויות חיצוניות.
יש כמה מצבים שבהם כדאי לעשות את זה:
אפליקציית החזית שלכם משתמשת ישירות ב-Identity Platform. שרת ה-API של הקצה העורפי בנוי באמצעות App Engine ומוגן על ידי IAP באמצעות זהויות חיצוניות.
האפליקציה מיועדת לשימוש בסביבת דפדפן לא מסורתית, למשל ב-Android, ב-iOS או בשורת הפקודה, שבה השימוש בהפניה בדפדפן לאימות משתמשים לא אפשרי.
גישה למשאבים
כדי לגשת למשאב באופן פרוגרמטי באמצעות JWT של חשבון שירות, ראו אימות באמצעות JWT של חשבון שירות.
כדי לגשת למשאב באופן פרוגרמטי באמצעות אסימון מזהה:
אחזור של אסימון המזהה של המשתמש.
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. });לאחר מכן אפשר לאחזר את טוקן ה-ID באובייקט
user:user.getIdToken() .then((idToken) => { // idToken is now available and can be sent to API server. }) .catch((error) => { // Handler error. });REST
התקשרות אל
signInWithPasswordמחזירה טוקן מזהה בתגובה: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, צריך לכלול את האסימון המזהה בכותרת ההרשאה.
curl -H "Authorization: Bearer GCIP-ID-TOKEN" "https://example.appspot.com/api"