אימות משתמשים באמצעות זהויות חיצוניות
במדריך למתחילים הזה נסביר איך לאבטח אפליקציה באמצעות שרת proxy לאימות זהויות (IAP) וזהויות חיצוניות. השילוב של IAP ו-Identity Platform מאפשר לאמת משתמשים באמצעות מגוון רחב של ספקי זהויות, כמו OAuth, SAML ו-OIDC, בנוסף לחשבונות Google.
במדריך למתחילים הזה תאבטחו אפליקציה לדוגמה ב-App Engine באמצעות אימות של פייסבוק.
לפני שמתחילים
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך למתחילים, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM בפרויקט:
- יצירת פרויקטים (
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 או יוצרים אותו.
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
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 .
לוחצים על Enable Identity Platform. הדף Identity Platform מופיע במסוף Google Cloud .
לאחר מכן, מפעילים את IAP:
נכנסים לדף IAP במסוף Google Cloud .
בוחרים את אותו פרויקט שבו השתמשתם ב-Identity Platform. אין תמיכה בשימוש בפרויקטים שונים.
לוחצים על Enable API.
הורדה ופריסה של הקוד לדוגמה
הקוד של המדריך למתחילים הזה מורכב משני רכיבים: אפליקציית לקוח ואפליקציה לאימות חשבונות.
אפליקציית הלקוח מוגנת באמצעות IAP. כשהוא מקבל בקשה ממשתמש לא מאומת, הוא מפנה את הבקשה לאפליקציה לאימות חשבונות כדי לאמת את זהות המשתמש. אם המשתמש נכנס בהצלחה, אפליקציה לאימות חשבונות מגיבה באמצעות אסימון אינטרנט מסוג 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
שרת ה-Proxy לאימות זהויות (IAP) משתמש ב-Identity Platform כדי לאמת זהויות חיצוניות. במדריך למתחילים הזה נשתמש בפייסבוק כדוגמה, אבל Identity Platform תומכת במגוון רחב של ספקי זהויות.
יצירת אפליקציה בפייסבוק
כדי לאמת משתמשים באמצעות פייסבוק, צריך מזהה אפליקציה וסוד אפליקציה.
מתחברים אל Meta for Developers. אם עדיין אין לכם חשבון פייסבוק, תצטרכו ליצור חשבון.
עוברים לדף My apps (האפליקציות שלי) בפייסבוק.
לחצו על Create App.
בתפריט הימני, לוחצים על הגדרות > בסיסי.
בתיבה Privacy Policy URL, מזינים כתובת URL תקינה. אם תפרסו את האפליקציה בסביבת הייצור בשלב מאוחר יותר, תוכלו לעדכן את כתובת ה-URL כך שתפנה למדיניות הפרטיות שלכם.
רושמים בצד את מזהה האפליקציה ואת הסוד של האפליקציה. תצטרכו אותם בקטע הבא.
הוספת פייסבוק כספק זהויות
מגדירים את Identity Platform כך שתשתמש בפייסבוק לאימות:
נכנסים לדף Identity providers במסוף Google Cloud .
לוחצים על הוספת ספק.
בוחרים באפשרות Facebook מרשימת הספקים.
מזינים את מזהה האפליקציה ואת סוד האפליקציה שקיבלתם בקטע הקודם.
לוחצים על Save.
הגדרת ה-URI להפניה אוטומטית ב-OAuth
כשפייסבוק מסיימת לעבד בקשה מאפליקציה לאימות חשבונות, היא צריכה URI כדי להפנות אליו.
חוזרים לדף My Apps (האפליקציות שלי) בפייסבוק ובוחרים את האפליקציה.
בתפריט הימני, לוחצים על מוצרים > הוספת מוצר.
מאתרים את המוצר Facebook Login ולוחצים על Set up.
בתפריט הניווט הימני, לוחצים על Settings (אין צורך להשלים את תהליך ההתחלה המהירה המודרך).
בתיבה Valid OAuth Redirect URIs, מזינים את כתובת ה-URI להפניה אוטומטית:
https://project-id.firebaseapp.com/__/auth/handler
אפשר למצוא את ה-URI הזה גם בדף ההגדרות של ספק Identity Platform.
לוחצים על שמירת השינויים.
סיימתם להגדיר את Identity Platform. עכשיו אפשר להגדיר את IAP כך שישתמש בו לאימות.
הפעלת IAP לשימוש בזהויות חיצוניות
נכנסים לדף IAP במסוף Google Cloud .
לוחצים על הכרטיסייה APPLICATIONS.
בוחרים את האפליקציה לדוגמה של App Engine שפרסתם קודם. כתובת ה-URL בקטגוריה Published אמורה להיראות בערך כך:
https://project-id.appspot.com
בעמודה IAP, מעבירים את המתג למצב On.
בחלונית הצדדית, לוחצים על התחלה בקטע שימוש בזהויות חיצוניות לצורך הרשאה.
בקטע דף כניסה, בוחרים באפשרות אני אגדיר בעצמי.
בשדה כתובת URL לאימות, מזינים את כתובת ה-URL של אפליקציה לאימות חשבונות. היא אמורה להיראות בערך כך:
https://project-id.firebaseapp.com/
אחרי שמזינים את כתובת ה-URL, מסוף Google Cloud מוסיף באופן אוטומטי את מפתח ה-API.
מסמנים את התיבה עם שם הפרויקט. פייסבוק צריך להיות רשום כספק זהויות.
לוחצים על Save.
סיימתם להגדיר את IAP.
בדיקת אימות המשתמשים
כדי לבדוק ש-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.
בנוסף, יכול להיות שתרצו למחוק את אפליקציית פייסבוק שיצרתם.