במאמר הזה מוסבר איך לנהל סשנים באמצעות שרת proxy לאימות זהויות (IAP) אם אתם משתמשים בזהויות חיצוניות לאימות.
רענון הסשנים
הסשנים של Identity Platform תקפים למשך שעה אחת. כשהסשן מסתיים, האפליקציה צריכה להפנות לדף האימות. דף האימות מכיל את טוקן הרענון של Identity Platform. כל עוד פרטי הכניסה של המשתמש עדיין בתוקף, אפשר להשתמש בהם לאימות מחדש בלי להציג ממשק משתמש.
אם המשתמש שינה לאחרונה את כתובת האימייל או הסיסמה שלו, או אם בוצעה פעולה אחרת שביטלה את הטוקן שלו, הוא יצטרך להשלים שוב את תהליך האימות.
טיפול בבקשות שאינן מסוג AJAX
בקשות שהן לא AJAX מטופלות באופן אוטומטי באמצעות הפניה אוטומטית של האפליקציה, בהנחה שדף האימות מוגדר בצורה נכונה.
טיפול בבקשות AJAX
ב-Chrome ובדפדפנים אחרים מפסיקים בהדרגה את השימוש בקובצי Cookie של צד שלישי. ההמלצות לשליחת בקשות AJAX בדף הזה לא יעבדו אם קובצי Cookie של צד שלישי מושבתים. עם זאת, ההמלצות שניתנו ימשיכו לפעול אם גם המקור וגם היעד של בקשות ה-AJAX הם מאותו אתר.
לקבלת הוראות לניהול קובצי Cookie של צד שלישי ב-Chrome, ראו איך מוחקים, מאשרים ומנהלים קובצי Cookie ב-Chrome
אם תשלחו בקשת AJAX עם אסימון שפג תוקפו, הבקשה תחזיר קוד סטטוס 401: Unauthorized. כדי לפתור את הבעיה, אפשר ליישם אחד מהפתרונות הבאים:
משנים את קוד האפליקציה כדי לטפל בקודי סטטוס HTTP
401.מוסיפים
iframeלאפליקציה כדי להפנות לרענון הסשן.להנחות את המשתמשים לטעון ידנית את מרענן הסשנים בכרטיסייה נפרדת.
אם אתם מקבלים קוד סטטוס 302 במקום 401 בתגובה לבקשות AJAX, הוסיפו כותרת X-Requested-With עם הערך XMLHttpRequest.
כך IAP יודע שהבקשה מגיעה מ-JavaScript.
טיפול בשגיאת HTTP 401 באמצעות קוד
הדרך המומלצת לרענן סשן AJAX היא לטפל באופן פרוגרמטי בקודי סטטוס HTTP 401. לשם כך:
מעדכנים את קוד האפליקציה כדי לטפל בשגיאה.
מוסיפים handler שפותח חלון לאימות מחדש של המשתמש, וסוגרים אותו כשהתהליך מסתיים.
שימוש ב-iframe
אם אתם לא יכולים לטפל ב-HTTP 401 באופן פרוגרמטי, הפתרון הטוב ביותר הבא הוא להוסיף iframe לאפליקציה שמפנה לרענון הסשן.
כדי להשתמש ב-iframe, צריך להגדיר דף כניסה בהתאמה אישית באותו דומיין של אפליקציית האינטרנט שמאובטחת באמצעות IAP. אחרת, המשתמשים ייתקלו בשגיאות שקשורות למקורות שונים. מידע נוסף על הגדרת דף כניסה זמין במאמר יצירת דף כניסה בהתאמה אישית.
דוגמה לשימוש ב-iframe:
<iframe src="https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER" style="width:0;height:0;border:0; border:none;"></iframe>
המערכת טוענת את מרענן הסשן
כמוצא אחרון, אתם יכולים להורות למשתמשים לטעון באופן ידני את רענון הסשן. מוסיפים לאפליקציה או למסמכי התיעוד שלה הנחיות למשתמשים לפתוח את כתובת ה-URL הבאה בכרטיסייה נפרדת:
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
הוצאת משתמשים מהחשבון
כדי להוציא משתמש ממשאב IAP, משתמשים בפרמטר השאילתה ?gcp-iap-mode=GCIP_SIGNOUT. לדוגמה, באפליקציית App Engine, כתובת ה-URL נראית כך:
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
אחרי שהמשתמשים ינותקו מהחשבון, הם יופנו בחזרה לדף הכניסה.
כדי להוציא משתמש מכל המשאבים והסשנים, צריך להפנות אותו לכתובת ה-URL לאימות עם מפתח ה-API ו-mode=signout כפרמטרים מצורפים. לדוגמה:
https://auth.example.com/?apiKey=API-KEY&mode=signout
המשתמשים יישארו בדף אחרי שהיציאה מהחשבון תושלם. כדאי להטמיע את הקריאה החוזרת (callback) של completeSignOut() באובייקט AuthenticationHandler כדי לספק למשתמש משוב על כך שהוא יצא מהחשבון בהצלחה.
מעבר בין דיירים
במקרים מסוימים, יכול להיות שמשתמש ירצה לבצע אימות מול כמה דיירים לאותו משאב IAP. לדוגמה, יכול להיות שהם שייכים לכמה דיירים שמעניקים רמות גישה שונות, והם רוצים לעבור לדייר עם פחות או יותר הרשאות.
כדי לאלץ את תהליך בחירת הדייר להתחיל מחדש, משתמשים ב-?gcp-iap-mode=CLEAR_LOGIN_COOKIE. לדוגמה, באפליקציית App Engine, כתובת ה-URL יכולה להיראות כך:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE