אימות משתמשים באמצעות Node.js

אפליקציות שפועלות בפלטפורמות מנוהלות כמו App Engine יכולות להימנע מניהול אימות משתמשים וניהול סשנים באמצעות שרת proxy לאימות זהויות (IAP) כדי לשלוט בגישה אליהן. Google Cloud ‫IAP יכול לשלוט בגישה לאפליקציה, אבל הוא גם מספק מידע על המשתמשים המאומתים, כולל כתובת האימייל ומזהה קבוע לאפליקציה בצורה של כותרות HTTP חדשות.

מטרות

  • חובה לדרוש מהמשתמשים באפליקציית App Engine לעבור אימות באמצעות IAP.

  • גישה לזהויות של משתמשים באפליקציה כדי להציג את כתובת האימייל המאומתת של המשתמש הנוכחי.

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

כשמסיימים את המשימות שמתוארות במסמך הזה אפשר למחוק את המשאבים שיצרתם כדי להימנע מחיובים נוספים. מידע נוסף זמין בקטע הסרת המשאבים.

לפני שמתחילים

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. התקינו את ה-CLI של Google Cloud.

  4. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  5. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  7. התקינו את ה-CLI של Google Cloud.

  8. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  9. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

רקע

במדריך הזה נעשה שימוש ב-IAP לאימות משתמשים. זו רק אחת מכמה גישות אפשריות. בקטע מושגי אימות מוסבר על השיטות השונות לאימות משתמשים.

האפליקציה Hello user-email-address

האפליקציה במדריך הזה היא אפליקציית Hello world מינימלית של App Engine, עם תכונה אחת לא אופיינית: במקום Hello world, מוצג הטקסט Hello user-email-address, כאשר user-email-address היא כתובת האימייל של המשתמש המאומת.

הפונקציונליות הזו מתאפשרת באמצעות בדיקה של המידע המאומת ש-IAP מוסיף לכל בקשה לאחזור מהרשת שהוא מעביר לאפליקציה שלכם. יש שלוש כותרות בקשה חדשות שנוספות לכל בקשה לאחזור מהרשת שמגיעה לאפליקציה שלכם. שתי הכותרות הראשונות הן מחרוזות טקסט פשוט שבהן אפשר להשתמש כדי לזהות את המשתמש. הכותרת השלישית היא אובייקט חתום בצורה מוצפנת עם אותו מידע.

  • X-Goog-Authenticated-User-Email: כתובת האימייל של המשתמש מזהה אותו. אל תאחסנו מידע אישי אם האפליקציה יכולה להימנע מכך. האפליקציה הזו לא שומרת נתונים, אלא רק מחזירה אותם למשתמש.

  • X-Goog-Authenticated-User-Id: מזהה המשתמש הזה שמוקצה על ידי Google לא מציג מידע על המשתמש, אבל הוא מאפשר לאפליקציה לדעת שהמשתמש המחובר הוא אותו משתמש שנראה בעבר.

  • X-Goog-Iap-Jwt-Assertion: אתם יכולים להגדיר Google Cloud אפליקציות כך שיקבלו בקשות אינטרנט מאפליקציות אחרות בענן, ויעקפו את IAP, בנוסף לבקשות אינטרנט מהאינטרנט. אם אפליקציה מוגדרת כך, יכול להיות שבבקשות כאלה יהיו כותרות מזויפות. במקום להשתמש באחד מהכותרות של הטקסט הפשוט שצוינו קודם, אפשר להשתמש בכותרת הזו שחתמה באופן קריפטוגרפי ולאמת אותה כדי לבדוק שהמידע סופק על ידי Google. גם כתובת האימייל של המשתמש וגם User-ID קבוע זמינים כחלק מכותרת חתומה.

אם אתם בטוחים שהאפליקציה מוגדרת כך שרק בקשות אינטרנט יכולות להגיע אליה, ושאי אפשר להשבית את שירות ה-IAP עבור האפליקציה, אז אחזור של מזהה משתמש ייחודי דורש רק שורת קוד אחת:

userId = req.header('X-Goog-Authenticated-User-ID') :? null;

עם זאת, באפליקציה עמידה צריך לצפות שדברים ישתבשו, כולל בעיות לא צפויות בהגדרה או בסביבה. לכן, במקום זאת, מומלץ ליצור פונקציה שמשתמשת בכותרת חתומה קריפטוגרפית ומאמתת אותה. אי אפשר לזייף את החתימה של הכותרת הזו, ואחרי האימות שלה אפשר להשתמש בה כדי להחזיר את הזיהוי.

יצירת קוד המקור

  1. משתמשים בעורך טקסט כדי ליצור קובץ בשם app.js ומדביקים בו את הקוד הבא:

    const express = require('express');
    const metadata = require('gcp-metadata');
    const {OAuth2Client} = require('google-auth-library');
    
    const app = express();
    const oAuth2Client = new OAuth2Client();
    
    // Cache externally fetched information for future invocations
    let aud;
    
    async function audience() {
      if (!aud && (await metadata.isAvailable())) {
        let project_number = await metadata.project('numeric-project-id');
        let project_id = await metadata.project('project-id');
    
        aud = '/projects/' + project_number + '/apps/' + project_id;
      }
    
      return aud;
    }
    
    async function validateAssertion(assertion) {
      if (!assertion) {
        return {};
      }
    
      // Check that the assertion's audience matches ours
      const aud = await audience();
    
      // Fetch the current certificates and verify the signature on the assertion
      const response = await oAuth2Client.getIapPublicKeys();
      const ticket = await oAuth2Client.verifySignedJwtWithCertsAsync(
        assertion,
        response.pubkeys,
        aud,
        ['https://cloud.google.com/iap']
      );
      const payload = ticket.getPayload();
    
      // Return the two relevant pieces of information
      return {
        email: payload.email,
        sub: payload.sub,
      };
    }
    
    app.get('/', async (req, res) => {
      const assertion = req.header('X-Goog-IAP-JWT-Assertion');
      let email = 'None';
      try {
        const info = await validateAssertion(assertion);
        email = info.email;
      } catch (error) {
        console.log(error);
      }
      res.status(200).send(`Hello ${email}`).end();
    });
    
    
    // Start the server
    const PORT = process.env.PORT || 8080;
    app.listen(PORT, () => {
      console.log(`App listening on port ${PORT}`);
      console.log('Press Ctrl+C to quit.');
    });
    

    הסבר מפורט על הקובץ app.js מופיע בקטע הסבר על הקוד בהמשך המדריך הזה.

  2. יוצרים קובץ נוסף בשם package.json ומדביקים בו את התוכן הבא:

    {
      "name": "iap-authentication",
      "description": "Minimal app to use authentication information from IAP.",
      "private": true,
      "license": "Apache-2.0",
      "author": "Google LLC",
      "repository": {
        "type": "git",
        "url": "https://github.com/GoogleCloudPlatform/getting-started-nodejs.git"
      },
      "engines": {
        "node": ">=12.0.0"
      },
      "scripts": {
        "start": "node app.js",
        "test": "mocha --exit test/*.test.js"
      },
      "dependencies": {
        "express": "^4.17.1",
        "gcp-metadata": "^5.0.0",
        "google-auth-library": "^8.0.0"
      },
      "devDependencies": {
        "mocha": "^9.0.0",
        "supertest": "^6.0.0"
      }
    }
    

    בקובץ package.json מפורטים כל יחסי התלות של Node.js שהאפליקציה צריכה. ‫jsonwebtoken מספקת את פונקציית הבדיקה והפענוח של JWT.

  3. יוצרים קובץ בשם app.yaml ומכניסים לתוכו את הטקסט הבא:

    # Copyright 2019 Google LLC
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #    http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    runtime: nodejs10
    

    קובץ app.yaml מציין ל-App Engine איזו סביבת שפה נדרשת לקוד.

הסבר על הקוד

בקטע הזה מוסבר איך הקוד בקובץ app.js פועל. אם רוצים להפעיל את האפליקציה, אפשר לדלג אל הקטע פריסת האפליקציה.

הקוד הבא נמצא בקובץ app.js. כשהאפליקציה מקבלת HTTP GET, מופעלת ההוראה switch case עבור /:

הפונקציה מקבלת את ערך הכותרת של טענת ה-JWT ש-IAP הוסיף מהבקשה הנכנסת, וקוראת לפונקציה כדי לאמת את הערך הזה שחתום בצורה קריפטוגרפית. הערך הראשון שמוחזר (כתובת אימייל) משמש לאחר מכן בדף אינטרנט מינימלי שנוצר ומוחזר.

app.get('/', async (req, res) => {
  const assertion = req.header('X-Goog-IAP-JWT-Assertion');
  let email = 'None';
  try {
    const info = await validateAssertion(assertion);
    email = info.email;
  } catch (error) {
    console.log(error);
  }
  res.status(200).send(`Hello ${email}`).end();
});

הפונקציה validateAssertion משתמשת בפונקציה verifySignedJwtWithCertsAsync() מ-google-auth-library כדי לוודא שהטענה חתומה בצורה תקינה, וכדי לחלץ את פרטי המטען הייעודי (payload) מהטענה. המידע הזה כולל את כתובת האימייל של המשתמש המאומת ומזהה ייחודי קבוע של המשתמש. אם אי אפשר לפענח את הטענה, הפונקציה הזו תזרוק הודעה ותדפיס אותה כדי לתעד את השגיאה ביומן.

כדי לאמת הצהרת JWT, צריך לדעת את אישורי המפתח הציבורי של הישות שחתמה על ההצהרה (Google במקרה הזה) ואת קהל היעד שאליו ההצהרה מיועדת. באפליקציית App Engine, קהל היעד הוא מחרוזת עם פרטי זיהוי של הפרויקט. Google Cloud הפונקציה הזו מקבלת את האישורים האלה ואת מחרוזת הקהל מהפונקציות שקדמו לה.

async function validateAssertion(assertion) {
  if (!assertion) {
    return {};
  }

  // Check that the assertion's audience matches ours
  const aud = await audience();

  // Fetch the current certificates and verify the signature on the assertion
  const response = await oAuth2Client.getIapPublicKeys();
  const ticket = await oAuth2Client.verifySignedJwtWithCertsAsync(
    assertion,
    response.pubkeys,
    aud,
    ['https://cloud.google.com/iap']
  );
  const payload = ticket.getPayload();

  // Return the two relevant pieces of information
  return {
    email: payload.email,
    sub: payload.sub,
  };
}

אתם יכולים לחפש את המזהה המספרי ואת השם של Google Cloud הפרויקט ולהזין אותם בקוד המקור בעצמכם, אבל הפונקציה audience עושה את זה בשבילכם על ידי שליחת שאילתה לשירות המטא-נתונים הרגיל שזמין לכל אפליקציית App Engine. מכיוון ששירות המטא-נתונים הוא חיצוני לקוד האפליקציה, התוצאה הזו נשמרת במשתנה גלובלי שמוחזר בלי צורך לחפש מטא-נתונים בקריאות הבאות.

async function audience() {
  if (!aud && (await metadata.isAvailable())) {
    let project_number = await metadata.project('numeric-project-id');
    let project_id = await metadata.project('project-id');

    aud = '/projects/' + project_number + '/apps/' + project_id;
  }

  return aud;
}

שירות המטא-נתונים של App Engine (ושירותי מטא-נתונים דומים לשירותי מחשוב אחרים שלGoogle Cloud ) נראה כמו אתר אינטרנט, והשאילתות שמופנות אליו הן שאילתות אינטרנט רגילות. עם זאת, שירות המטא-נתונים הוא לא אתר חיצוני, אלא תכונה פנימית שמחזירה מידע מבוקש על האפליקציה שפועלת, ולכן בטוח להשתמש בבקשות http במקום בבקשות https. הוא משמש לקבלת המזהים הנוכחיים שנדרשים להגדרת הקהל המיועד של הצהרת ה-JWT. Google Cloud

const response = await oAuth2Client.getIapPublicKeys();

כדי לאמת חתימה דיגיטלית, צריך את אישור של מפתח ציבורי של החותם. ‫Google מספקת אתר שמחזיר את כל אישורי המפתח הציבורי שנמצאים בשימוש כרגע. התוצאות האלה נשמרות במטמון למקרה שיהיה בהן צורך שוב באותו מופע של האפליקציה.

פריסת האפליקציה

עכשיו אפשר לפרוס את האפליקציה ואז להפעיל את IAP כדי לדרוש מהמשתמשים לבצע אימות לפני שהם יכולים לגשת לאפליקציה.

  1. בחלון ה-Terminal, עוברים לתיקייה שמכילה את הקובץ app.yaml ומפעילים את האפליקציה ב-App Engine:

    gcloud app deploy
    
  2. כשמופיעה בקשה, בוחרים אזור סמוך.

  3. כשמוצגת השאלה אם רוצים להמשיך בפעולת הפריסה, מזינים Y.

    תוך כמה דקות, האפליקציה שלכם תהיה פעילה באינטרנט.

  4. צפייה באפליקציה:

    gcloud app browse
    

    בפלט, מעתיקים את web-site-url, כתובת האינטרנט של האפליקציה.

  5. בחלון של הדפדפן, מדביקים את web-site-url כדי לפתוח את האפליקציה.

    לא מוצג אימייל כי עדיין לא השתמשתם ברכישות מתוך האפליקציה, ולכן לא נשלח מידע על המשתמש לאפליקציה.

הפעלת IAP

עכשיו, כשקיים מופע של App Engine, אפשר להגן עליו באמצעות IAP:

  1. נכנסים לדף שרת proxy לאימות זהויות (IAP) במסוף Google Cloud .

    מעבר לדף של שרת proxy לאימות זהויות (IAP)

  2. זו הפעם הראשונה שאתם מפעילים אפשרות אימות לפרויקט הזה, ולכן מוצגת לכם הודעה שלפיה אתם צריכים להגדיר את מסך ההסכמה ל-OAuth לפני שתוכלו להשתמש ב-IAP.

    לוחצים על הגדרת מסך בקשת ההסכמה.

  3. בכרטיסייה OAuth Consent Screen בדף Credentials, ממלאים את השדות הבאים:

    • אם החשבון שלכם נמצא בארגון Google Workspace, בוחרים באפשרות חיצוני ולוחצים על יצירה. בתור התחלה, האפליקציה תהיה זמינה רק למשתמשים שאתם מאשרים במפורש.

    • בשדה שם האפליקציה, מזינים IAP Example.

    • בשדה כתובת אימייל לתמיכה, מזינים את כתובת האימייל שלכם.

    • בשדה דומיין מורשה, מזינים את החלק של שם המארח בכתובת האתר של האפליקציה, לדוגמה, iap-example-999999.uc.r.appspot.com. אחרי שמזינים את שם המארח בשדה, מקישים על המקש Enter.

    • בשדה קישור לדף הבית של האפליקציה, מזינים את כתובת ה-URL של האפליקציה, לדוגמה, https://iap-example-999999.uc.r.appspot.com/.

    • בשדה Application privacy policy line (שורת מדיניות הפרטיות של האפליקציה), משתמשים באותה כתובת URL שמופיעה בקישור לדף הבית למטרות בדיקה.

  4. לוחצים על Save. כשמוצגת בקשה ליצירת פרטי כניסה, אפשר לסגור את החלון.

  5. נכנסים לדף שרת proxy לאימות זהויות (IAP) במסוף Google Cloud .

    מעבר לדף של שרת proxy לאימות זהויות (IAP)

  6. כדי לרענן את הדף, לוחצים על רענון . בדף הזה מופיעה רשימת המשאבים שאתם יכולים להגן עליהם.

  7. בעמודה IAP, לוחצים כדי להפעיל את הרכישה מתוך האפליקציה.

  8. בדפדפן, נכנסים שוב אל web-site-url.

  9. במקום דף האינטרנט, מוצג מסך התחברות שבו צריך לאמת את הזהות. כשאתם מתחברים, הגישה שלכם נדחית כי ל-IAP אין רשימה של משתמשים שאפשר לאפשר להם גישה לאפליקציה.

הוספת משתמשים מורשים לאפליקציה

  1. נכנסים לדף שרת proxy לאימות זהויות (IAP) במסוף Google Cloud .

    מעבר לדף של שרת proxy לאימות זהויות (IAP)

  2. מסמנים את התיבה של אפליקציית App Engine ולוחצים על הוספת ישות ראשית.

  3. מזינים allAuthenticatedUsers ובוחרים את התפקיד Cloud IAP/IAP-Secured Web App User.

  4. לוחצים על Save.

עכשיו כל משתמש ש-Google יכולה לאמת יכול לגשת לאפליקציה. אם רוצים, אפשר להגביל את הגישה עוד יותר על ידי הוספה של אדם אחד או יותר או של קבוצות כגורמים ראשיים:

  • כל כתובת אימייל ב-Gmail או ב-Google Workspace

  • כתובת אימייל קבוצתית ב-Google

  • שם דומיין של Google Workspace

גישה לאפליקציה

  1. בדפדפן, עוברים אל web-site-url.

  2. כדי לרענן את הדף, לוחצים על רענון .

  3. במסך הכניסה, מתחברים באמצעות פרטי הכניסה לחשבון Google.

    בדף מוצגת ההודעה 'שלום user-email-address' עם כתובת האימייל שלכם.

    אם עדיין מוצג אותו דף כמו קודם, יכול להיות שיש בעיה בדפדפן, שלא מעדכן באופן מלא בקשות חדשות עכשיו כשהפעלתם את IAP. סוגרים את כל חלונות הדפדפן, פותחים אותם מחדש ומנסים שוב.

מושגי אימות

יש כמה דרכים שבהן אפליקציה יכולה לאמת את המשתמשים שלה ולהגביל את הגישה רק למשתמשים מורשים. בקטעים הבאים מפורטות שיטות אימות נפוצות, לפי רמת המאמץ הנדרש מהאפליקציה, מהגבוהה לנמוכה.

אפשרות יתרונות חסרונות
אימות אפליקציות
  • האפליקציה יכולה לפעול בכל פלטפורמה, עם או בלי חיבור לאינטרנט
  • המשתמשים לא צריכים להשתמש בשירות אחר כדי לנהל את האימות
  • האפליקציה צריכה לנהל את פרטי הכניסה של המשתמשים בצורה מאובטחת, ולמנוע חשיפה שלהם
  • האפליקציה צריכה לשמור נתוני סשן של משתמשים מחוברים
  • האפליקציה צריכה לספק למשתמשים אפשרות להירשם, לשנות את הסיסמה ולשחזר את הסיסמה
OAuth2
  • האפליקציה יכולה לפעול בכל פלטפורמה שמחוברת לאינטרנט, כולל תחנת עבודה של מפתח
  • האפליקציה לא צריכה פונקציות של רישום משתמשים, שינוי סיסמאות או שחזור סיסמאות.
  • הסיכון לחשיפת מידע על המשתמשים מועבר לשירות אחר
  • אמצעי אבטחה חדשים בכניסה שמטופלים מחוץ לאפליקציה
  • המשתמשים צריכים להירשם בשירות אימות הזהות
  • האפליקציה צריכה לשמור נתוני סשן של משתמשים מחוברים
IAP
  • לא צריך להוסיף קוד לאפליקציה כדי לנהל משתמשים, אימות או מצב סשן
  • באפליקציה אין פרטי כניסה של משתמשים שעלולים להיפרץ
  • האפליקציה יכולה לפעול רק בפלטפורמות שהשירות תומך בהן. באופן ספציפי, שירותים מסוימים Google Cloud שתומכים ב-IAP, כמו App Engine.

אימות שמנוהל על ידי האפליקציה

בשיטה הזו, האפליקציה מנהלת בעצמה כל היבט של אימות המשתמשים. האפליקציה צריכה לנהל מסד נתונים משלה של פרטי כניסה של משתמשים ושל סשנים של משתמשים, ולספק פונקציות לניהול חשבונות משתמשים וסיסמאות, לבדיקת פרטי כניסה של משתמשים, ולהנפקה, בדיקה ועדכון של סשנים של משתמשים בכל כניסה מאומתת. התרשים הבא מדגים את שיטת האימות שמנוהלת על ידי האפליקציה.

תהליך מנוהל של אפליקציה

כפי שמוצג בתרשים, אחרי שהמשתמש מתחבר, האפליקציה יוצרת ושומרת מידע על הסשן של המשתמש. כשהמשתמש שולח בקשה לאפליקציה, הבקשה צריכה לכלול פרטי סשן שהאפליקציה אחראית לאמת.

היתרון העיקרי בגישה הזו הוא שהיא עצמאית ונמצאת בשליטת האפליקציה. האפליקציה אפילו לא צריכה להיות זמינה באינטרנט. החיסרון העיקרי הוא שעכשיו האפליקציה אחראית לספק את כל הפונקציות של ניהול החשבון ולהגן על כל נתוני ההרשאות הרגישים.

אימות חיצוני באמצעות OAuth2

חלופה טובה לטיפול בכל הנתונים בתוך האפליקציה היא שימוש בשירות חיצוני לניהול זהויות, כמו Google, שמטפל בכל פרטי החשבון והפונקציונליות של המשתמשים ואחראי על שמירת פרטי הכניסה הרגישים. כשמשתמש מנסה להתחבר לאפליקציה, הבקשה מנותבת לשירות הזהויות, שמאמת את המשתמש ואז מנתב את הבקשה בחזרה לאפליקציה עם פרטי האימות הנדרשים. תוכלו להיעזר במאמר שימוש ב-OAuth 2.0 לאפליקציות אינטרנט.

בתרשים הבא מודגם אימות חיצוני באמצעות שיטת OAuth2.

תהליך OAuth2

התהליך בדיאגרמה מתחיל כשהמשתמש שולח בקשה לגשת לאפליקציה. במקום להגיב ישירות, האפליקציה מפנה את הדפדפן של המשתמש לפלטפורמת הזהויות של Google, שבה מוצג דף להתחברות ל-Google. אחרי שהמשתמש מתחבר בהצלחה, הדפדפן שלו מופנה חזרה לאפליקציה. הבקשה הזו כוללת מידע שהאפליקציה יכולה להשתמש בו כדי לחפש מידע על המשתמש שאומת, והאפליקציה מגיבה למשתמש.

לשיטה הזו יש הרבה יתרונות לאפליקציה. היא מעבירה את כל הפונקציות והסיכונים של ניהול החשבון לשירות החיצוני, מה שיכול לשפר את האבטחה של הכניסה והחשבון בלי שהאפליקציה תצטרך להשתנות. עם זאת, כפי שמוצג בתרשים הקודם, לאפליקציה צריכה להיות גישה לאינטרנט כדי להשתמש בשיטה הזו. האפליקציה אחראית גם לניהול הסשנים אחרי שהמשתמש מאומת.

שרת proxy לאימות זהויות (IAP)

הגישה השלישית, שמוסברת במדריך הזה, היא שימוש ב-IAP כדי לטפל בכל האימות וניהול הסשנים עם כל שינוי באפליקציה. IAP מיירט את כל בקשות האינטרנט לאפליקציה, חוסם את הבקשות שלא עברו אימות ומעביר את השאר עם נתוני זהות המשתמש שנוספו לכל בקשה.

בתרשים הבא מוצג הטיפול בבקשה.

תהליך הרכישה מתוך האפליקציה

בקשות ממשתמשים נחסמות על ידי IAP, שחוסם בקשות לא מאומתות. בקשות מאומתות מועברות לאפליקציה, בתנאי שהמשתמש המאומת נמצא ברשימת המשתמשים המורשים. לבקשות שעוברות דרך IAP מתווספות כותרות שמזהות את המשתמש ששלח את הבקשה.

האפליקציה לא צריכה יותר לטפל בפרטים של חשבון משתמש או של סשן. כל פעולה שצריכה לדעת מזהה ייחודי של המשתמש יכולה לקבל אותו ישירות מכל בקשה לאחזור מהרשת נכנסת. עם זאת, אפשר להשתמש בשיטה הזו רק בשירותי מחשוב שתומכים ב-IAP, כמו App Engine ומאזני עומסים. אי אפשר להשתמש ב-IAP במחשב פיתוח מקומי.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים, או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.