אימות משתמשים עם זהויות חיצוניות
במדריך למתחילים הזה מוסבר איך לאבטח אפליקציה באמצעות שרת proxy לאימות זהויות (IAP) וזהויות חיצוניות. כשמשלבים בין IAP לבין Identity Platform, אפשר לאמת משתמשים באמצעות מגוון רחב של ספקי זהויות, כמו OAuth, SAML ו-OIDC, בנוסף לחשבונות Google.
במדריך למתחילים הזה תלמדו איך לאבטח אפליקציית App Engine לדוגמה באמצעות אימות של פייסבוק.
לפני שמתחילים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לביצוע ההפעלה המהירה הזו, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
- Project Creator (
roles/resourcemanager.projectCreator) - אדמין של App Engine(
roles/appengine.appAdmin) - צפייה באימות ב-Firebase (
roles/firebaseauth.viewer) - אדמין במדיניות IAP (
roles/iap.admin) - צפייה ב-Compute (
roles/compute.viewer) - אדמין ב-Identity Platform (
roles/identityplatform.admin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.
תפקידים שנדרשים כדי לבחור או ליצור פרויקט
- Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים
התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initאם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
מאתחלים את App Engine בפרויקט:
gcloud app create --project=project-id
מתקינים גרסה עדכנית של Node.js.
התקנה של כלי שורת הפקודה של Firebase:
npm install -g firebase-tools
הפעלת ממשקי ה-API
קודם מפעילים את Identity Platform:
עוברים לדף Identity Platform Marketplace במסוףGoogle Cloud .
לוחצים על הפעלת Identity Platform. הדף Identity Platform מופיע במסוף Google Cloud .
לאחר מכן, מפעילים את הרכישות מתוך האפליקציה:
נכנסים לדף IAP במסוף Google Cloud .
בוחרים את אותו פרויקט שבו השתמשתם ב-Identity Platform. שימוש בפרויקטים שונים לא אפשרי.
לוחצים על Enable API.
הורדה ופריסה של הקוד לדוגמה
הקוד של המדריך הזה כולל שני רכיבים: אפליקציית לקוח ואפליקציית אימות.
אפליקציית הלקוח מוגנת על ידי רכישות מתוך האפליקציה. כשהוא מקבל בקשה ממשתמש לא מאומת, הוא מפנה את הבקשה לאפליקציית האימות כדי לאמת את זהות המשתמש. אם המשתמש נכנס לחשבון בהצלחה, אפליקציית האימות מגיבה עם אסימון אינטרנט מסוג JSON (JWT). לצורך הדגמה, אפליקציית הלקוח מציגה את ה-JWT.
קודם כול, מורידים את הקוד ומפעילים את אפליקציית הלקוח:
מורידים את הקוד לדוגמה:
git clone https://github.com/GoogleCloudPlatform/iap-gcip-web-toolkit.git
עוברים לספרייה של אפליקציית הלקוח:
cd iap-gcip-web-toolkit/sample/appיחסי תלות של התקנות:
npm installפורסים את אפליקציית הלקוח ב-App Engine:
npm run deployאפליקציית הלקוח מופעלת בכתובת ה-URL:
https://[PROJECT-ID].appspot.com
בשלב הבא, פורסים את אפליקציית האימות:
עוברים לספרייה של אפליקציית האימות:
cd ../authui-firebaseuiיחסי תלות של התקנות:
npm install export NODE_OPTIONS=--openssl-legacy-providerמגדירים את אפליקציית האימות לשימוש באירוח ב-Firebase. מציינים את Google Cloudמזהה הפרויקט של Google Cloud הפרויקט שמכיל את אפליקציית הלקוח שמוגנת על ידי IAP:
firebase use project-id
פורסים את האפליקציה:
npm run deployאפליקציית האימות מופעלת בכתובת ה-URL:
https://[PROJECT-ID].firebaseapp.com
הפעלת את אפליקציות הלקוח והאימות! השלב הבא הוא להגדיר את Identity Platform ואת IAP.
הגדרה של Identity Platform
שרת IAP משתמש ב-Identity Platform כדי לאמת זהויות חיצוניות. במדריך הזה נשתמש בפייסבוק כדוגמה, אבל Identity Platform תומך במגוון רחב של ספקי זהויות.
יצירת אפליקציה בפייסבוק
כדי לאמת משתמשים באמצעות פייסבוק, צריך מזהה אפליקציה וסוד אפליקציה.
מתחברים ל- Meta for Developers. אם עדיין אין לכם חשבון פייסבוק, תצטרכו ליצור חשבון.
עוברים לדף האפליקציות שלי בפייסבוק.
לחצו על Create App.
בתפריט הימני, בוחרים באפשרות הגדרות > בסיסיות.
בתיבה כתובת ה-URL של מדיניות הפרטיות, מזינים כתובת URL תקינה. אם תפרסו את האפליקציה בסביבת הייצור בהמשך, תוכלו לעדכן את כתובת ה-URL כך שתפנה למדיניות הפרטיות שלכם.
חשוב לזכור את מזהה האפליקציה ואת הסוד של האפליקציה. תצטרכו אותם בקטע הבא.
הוספת פייסבוק כספק זהויות
מגדירים את Identity Platform כך שישתמש בפייסבוק לאימות:
נכנסים לדף Identity providers במסוף Google Cloud .
לוחצים על הוספת ספק.
בוחרים באפשרות Facebook מתוך רשימת הספקים.
מזינים את מזהה האפליקציה ואת סוד האפליקציה שקיבלתם בקטע הקודם.
לוחצים על Save.
הגדרת ה-URI של ההפניה האוטומטית ב-OAuth
כשפייסבוק מסיימת לעבד בקשה מאפליקציית האימות, היא צריכה URI כדי להפנות אליו.
חוזרים לדף האפליקציות שלי בפייסבוק ובוחרים את האפליקציה.
בתפריט הימני, לוחצים על מוצרים > הוספת מוצר.
מחפשים את המוצר Facebook Login ולוחצים על Set up (הגדרה).
בתפריט הניווט הימני, לוחצים על הגדרות (אין צורך להשלים את תהליך ההפעלה המהיר המודרך).
בתיבה כתובות URI חוקיות להפניה אוטומטית של OAuth, מזינים את ה-URI של ההפניה האוטומטית:
https://project-id.firebaseapp.com/__/auth/handler
אפשר למצוא את ה-URI הזה גם בדף ההגדרות של ספק הזהויות ב-Identity Platform.
לוחצים על שמירת השינויים.
סיימתם להגדיר את Identity Platform. עכשיו אפשר להגדיר את IAP כך שישתמש בו לאימות.
הפעלת IAP לשימוש בזהויות חיצוניות
נכנסים לדף IAP במסוף Google Cloud .
לוחצים על הכרטיסייה אפליקציות.
בוחרים את אפליקציית App Engine לדוגמה שפרסתם קודם. כתובת ה-URL בקטגוריה פורסם צריכה להיראות בערך כך:
https://project-id.appspot.com
בעמודה 'רכישות מתוך האפליקציה', מעבירים את המתג למצב מופעל.
בחלונית הצדדית, לוחצים על התחלה ליד שימוש בזהויות חיצוניות להרשאה.
בקטע דף הכניסה, בוחרים באפשרות אני אציין דף כניסה משלי.
בשדה כתובת ה-URL לאימות, מזינים את כתובת ה-URL של אפליקציית האימות. היא צריכה להיראות בערך כך:
https://project-id.firebaseapp.com/
אחרי שמזינים את כתובת ה-URL, המערכת מוסיפה אוטומטית את מפתח ה-API למסוף Google Cloud .
מסמנים את התיבה עם שם הפרויקט. פייסבוק צריך להופיע ברשימה כספק זהויות.
לוחצים על Save.
סיימתם להגדיר רכישות מתוך האפליקציה.
בדיקת אימות משתמשים
כדי לבדוק ש-IAP מגן על האפליקציה ומאמת משתמשים באמצעות פייסבוק:
עוברים לאפליקציית הלקוח App Engine בדפדפן:
https://project-id.appspot.com
אחרי מסך טעינה קצר, תועברו לדף הכניסה של Identity Platform.
פועלים לפי ההוראות במסך כדי לבצע אימות באמצעות פייסבוק.
המערכת אמורה להפנות אתכם בחזרה לאפליקציית הלקוח, שבה יוצג ה-JWT שהוחזר על ידי Identity Platform.
כדי לצאת לגמרי, צריך לצאת מאפליקציית הדוגמה שיצרתם ומפייסבוק. צריך להתנתק משתי האפליקציות כי Firebase יוצר סשן עם פייסבוק שתקף לשעה אחת. מידע נוסף מופיע במאמר בנושא ניהול סשנים של משתמשים.
כל הכבוד! פרסתם אפליקציה ב-App Engine והגנתם עליה באמצעות IAP וזהויות חיצוניות.
הסרת המשאבים
כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
בנוסף, מומלץ למחוק את אפליקציית פייסבוק שיצרתם.