אימות משתמשים באמצעות זהויות חיצוניות

במדריך למתחילים הזה נסביר איך לאבטח אפליקציה באמצעות שרת proxy לאימות זהויות (IAP) וזהויות חיצוניות. השילוב של IAP ו-Identity Platform מאפשר לאמת משתמשים באמצעות מגוון רחב של ספקי זהויות, כמו OAuth,‏ SAML ו-OIDC, בנוסף לחשבונות Google.

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

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

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להשלמת המדריך למתחילים, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM בפרויקט:

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

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

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    התפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים?

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט ב- Google Cloud .

  3. התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    gcloud init

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

  4. מפעילים את App Engine בפרויקט:

    gcloud app create --project=project-id
    
  5. מתקינים את Git.

  6. מתקינים גרסה עדכנית של Node.js.

  7. מתקינים את כלי שורת הפקודה של Firebase:

    npm install -g firebase-tools
    

הפעלת ממשקי ה-API

קודם כול, מפעילים את Identity Platform:

  1. נכנסים לדף Identity Platform Marketplace במסוףGoogle Cloud .

    לדף של Identity Platform ב-Marketplace

  2. לוחצים על Enable Identity Platform. הדף Identity Platform מופיע במסוף Google Cloud .

לאחר מכן, מפעילים את IAP:

  1. נכנסים לדף IAP במסוף Google Cloud .

    כניסה לדף IAP

  2. בוחרים את אותו פרויקט שבו השתמשתם ב-Identity Platform. אין תמיכה בשימוש בפרויקטים שונים.

  3. ‫לוחצים על Enable API.

הורדה ופריסה של הקוד לדוגמה

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

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

קודם כל, מורידים את הקוד ופורסים את אפליקציית הלקוח:

  1. מורידים את הקוד לדוגמה:

    git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
    
  2. עוברים לספרייה של אפליקציית הלקוח:

    cd iap-gcip-web-toolkit/sample/app
    
  3. יחסי תלות של התקנות:

    npm install
    
  4. פורסים את אפליקציית הלקוח ב-App Engine:

    npm run deploy
    

    אפליקציית הלקוח מופעלת בכתובת ה-URL:

    https://[PROJECT-ID].appspot.com
    

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

  1. עוברים לספרייה של אפליקציה לאימות חשבונות:

    cd ../authui-firebaseui
    
  2. יחסי תלות של התקנות:

    npm install
    export NODE_OPTIONS=--openssl-legacy-provider
    
  3. מגדירים את אפליקציית האימות כך שתשתמש באירוח ב-Firebase. מציינים את מזהה הפרויקט ב- Google Cloudשל הפרויקט ב- Google Cloud שמכיל את אפליקציית הלקוח שמוגנת באמצעות IAP:

    firebase use project-id
    
  4. פורסים את האפליקציה:

    npm run deploy
    

    האפליקציה לאימות חשבונות מופעלת בכתובת ה-URL:

    https://[PROJECT-ID].firebaseapp.com
    

פרסתם את אפליקציות הלקוח ואפליקציה לאימות חשבונות! השלב הבא הוא להגדיר את Identity Platform ואת IAP.

הגדרת Identity Platform

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

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

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

  1. מתחברים אל Meta for Developers. אם עדיין אין לכם חשבון פייסבוק, תצטרכו ליצור חשבון.

  2. עוברים לדף My apps (האפליקציות שלי) בפייסבוק.

  3. לחצו על Create App.

  4. בתפריט הימני, לוחצים על הגדרות > בסיסי.

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

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

הוספת פייסבוק כספק זהויות

מגדירים את Identity Platform כך שתשתמש בפייסבוק לאימות:

  1. נכנסים לדף Identity providers במסוף Google Cloud .

    כניסה לדף Identity Providers

  2. לוחצים על הוספת ספק.

  3. בוחרים באפשרות Facebook מרשימת הספקים.

  4. מזינים את מזהה האפליקציה ואת סוד האפליקציה שקיבלתם בקטע הקודם.

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

הגדרת ה-URI להפניה אוטומטית ב-OAuth

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

  1. חוזרים לדף My Apps (האפליקציות שלי) בפייסבוק ובוחרים את האפליקציה.

  2. בתפריט הימני, לוחצים על מוצרים > הוספת מוצר.

  3. מאתרים את המוצר Facebook Login ולוחצים על Set up.

  4. בתפריט הניווט הימני, לוחצים על Settings (אין צורך להשלים את תהליך ההתחלה המהירה המודרך).

  5. בתיבה Valid OAuth Redirect URIs, מזינים את כתובת ה-URI להפניה אוטומטית:

    https://project-id.firebaseapp.com/__/auth/handler
    

    אפשר למצוא את ה-URI הזה גם בדף ההגדרות של ספק Identity Platform.

  6. לוחצים על שמירת השינויים.

סיימתם להגדיר את Identity Platform. עכשיו אפשר להגדיר את IAP כך שישתמש בו לאימות.

הפעלת IAP לשימוש בזהויות חיצוניות

  1. נכנסים לדף IAP במסוף Google Cloud .

    כניסה לדף IAP

  2. לוחצים על הכרטיסייה APPLICATIONS.

  3. בוחרים את האפליקציה לדוגמה של App Engine שפרסתם קודם. כתובת ה-URL בקטגוריה Published אמורה להיראות בערך כך:

    https://project-id.appspot.com
    
  4. בעמודה IAP, מעבירים את המתג למצב On.

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

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

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

    https://project-id.firebaseapp.com/
    

    אחרי שמזינים את כתובת ה-URL, מסוף Google Cloud מוסיף באופן אוטומטי את מפתח ה-API.

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

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

סיימתם להגדיר את IAP.

בדיקת אימות המשתמשים

כדי לבדוק ש-IAP מגן על האפליקציה ומאמת משתמשים באמצעות פייסבוק:

  1. עוברים לאפליקציית הלקוח של App Engine בדפדפן:

    https://project-id.appspot.com
    

    אחרי מסך טעינה קצר, תועברו לדף הכניסה של Identity Platform.

  2. פועלים לפי ההנחיות במסך כדי לבצע אימות באמצעות פייסבוק.

  3. המערכת אמורה להפנות אתכם בחזרה לאפליקציית הלקוח, שתציג את ה-JWT שהוחזר על ידי Identity Platform.

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

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

הסרת המשאבים

כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה:

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

    כניסה לדף Manage resources

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

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

המאמרים הבאים