סקירה כללית על תהליכי ההזדהות ב-Spotnana

נוצר על-ידי Ashish Chaudhary, השתנה ב א', 5 אוק ב- 12:32 לפני הצהריים מאת Ashish Chaudhary

סקירה כללית – תהליכי אימות ב-Spotnana

תוכן העניינים

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


רכיבים מרכזיים

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

  • ממשק משתמש Spotnana(Spotnana User Interface) הכוונה לממשק האינטרנטי של Spotnana (כלי ההזמנות המקוון) או לאפליקציה הסלולרית של Spotnana. בפרט, הכוונה לעמוד הכניסה, שממנו מתחיל תהליך האימות כאשר המשתמש נכנס או יוצר חשבון חדש.
  • שרת Spotnana השרת האחורי של Spotnana, המשמש לצורכי אימות משתמשים (כגון אישור גישה למשאב, שמירה ועיבוד מאובטח של פרטי המשתמש).
  • ממשק משתמש של השותף (Partner's User Interface) הממשק בו משתמשים השותפים כדי לגשת לפלטפורמת Spotnana (למשל, כאשר Spotnana משולבת בממשק השותף באמצעות iFrame – המשתמשים ייגשו ל-Spotnana דרך הממשק של השותף).
  • שרת שותף שרתים אחוריים של השותפים, המשמשים אותם לצורך אינטגרציה עם Spotnana.
  • Spotnana IdP (Spotnana Identity Provider) שירות פנימי של Spotnana, המשמש לניהול זהויות משתמשים ומתן הרשאות גישה.
  • IdP של השותף ספקי זהות חיצוניים (IdP) בהם משתמשים השותפים, לדוג' Google ו-Azure. 
  • OBT כלי ההזמנות המקוון של Spotnana (OBT), הזמין בכתובת https://app.spotnana.com/ 
  • אסימון מזהה (Subject token) באימות מבוסס iFrame (או החלפת אסימונים), אסימון זה מייצג את זהות המשתמש. באמצעותו מאתרים את פרטי המשתמש ומאשרים לו גישה לפלטפורמת Spotnana.
  • אסימון גישה (Access token) אמצעי זיהוי (OAuth) שמאפשר לאפליקציית שותף לגשת למשאבים מוגנים בשם המשתמש. זהו מפתח הרשאה זמני, שמאפשר שליחת בקשות API בלי לחשוף את פרטי המשתמש.
  • אסימון רענון (Refresh token) אמצעי זיהוי לטווח ארוך, המאפשר להנפיק אסימוני גישה חדשים מבלי לבקש מהמשתמש להתחבר מחדש. לרוב מונפק יחד עם אסימון הגישה בעת התחברות ראשונה.
  • פרטי לקוח (Client credentials) המידע שנמסר למשתמשים המתחברים ישירות ל-API של Spotnana (למשל מזהה clientId ו- clientSecret).
  • PID (מזהה אישי) מזהה אישי שנוצר עבור המשתמש. ה-PID משמש לשליפת פרטי המשתמש משרת Spotnana.
  • orgId מזהה ייחודי שמוקצה על ידי Spotnana לארגון של המשתמש.
  • tmcId מזהה ייחודי שמוקצה על ידי Spotnana לחברת ניהול נסיעות (TMC).


שיטות אימות נתמכות

להלן שיטות האימות הנתמכות במערכת Spotnana:


אימות מבוסס סיסמה

באימות מבוסס סיסמה, ממשק המשתמש של Spotnana (כלומר עמוד הכניסה או ההרשמה ב-OBT) יוזם ומנהל את תהליך האימות מול השרתים האחוריים של Spotnana. קיימים שני מסלולים עיקריים: התחברות עם פרופיל קיים, או יצירת פרופיל חדש. בהמשך תמצאו הסבר מפורט על כל אחד מהתהליכים, כולל תרשימי זרימה.


משתמש קיים

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

איור: תרשים זרימה של תהליך האימות מבוסס הסיסמה עבור משתמשים קיימים.


שלבמהלך התהליך
משתמש קיים מתחבר דרך OBT או אפליקציית Spotnana באמצעות כתובת האימייל שלו.
1
  • ממשק המשתמש של Spotnana שולח בקשת API לשרת Spotnana כדי לקבל את הגדרות האימות של המשתמש. הבקשה כוללת את פרטי ההתחברות של המשתמש.
  • בתשובה יתקבלו tmcId, orgIdו- authProviderType.
2
  • ממשק המשתמש של Spotnana שולח בקשת API ל-IdP של Spotnana עם clientId, כתובת האימייל והסיסמה. IdP של Spotnana מנפיק אסימון Bearer חדש ומחזיר אותו לממשק המשתמש.
  • שלב זה מאמת את זהות המשתמש.
3
  • לאחר שהמשתמש אומת בשלב 2, כל בקשות ה-API הבאות חייבות לכלול את אסימון ה-Bearer, את orgIdואת tmcId בכותרת הבקשה.
  • אסימון ה-Bearer נבדק בכל בקשת API, והתגובה נשלחת חזרה לממשק המשתמש של Spotnana.


משתמש חדש

התרשים והשלבים הבאים מסבירים כיצד ממשק המשתמש של Spotnana מתקשר עם השירותים האחוריים כדי לאמת משתמש חדש (או משתמש קיים שמבצע איפוס סיסמה).


איור: תרשים זרימה של תהליך האימות מבוסס הסיסמה עבור משתמשים חדשים.


שלב
מהלך התהליך
משתמש חדש מזין את כתובת האימייל שלו בעמוד הכניסה של OBT ולוחץ על הבא.
1
  • ממשק המשתמש של Spotnana שולח בקשת API לשרת Spotnana כדי לקבל את הגדרות האימות של המשתמש. הבקשה כוללת את פרטי ההתחברות של המשתמש.
  • בתשובה יתקבלו tmcId, orgIdו- authProviderType.
1 א'

המשתמש מזין סיסמה חדשה ולוחץ על הבא.

2
  • ממשק המשתמש של Spotnana שולח בקשת API ל-IdP של Spotnana כדי לרשום את המשתמש, יחד עם clientId, כתובת האימייל והסיסמה החדשה.
  • לאחר ההרשמה, נשלחת סיסמה חד-פעמית (OTP) לכתובת האימייל של המשתמש.
3
  • המשתמש מזין את ה-OTP בממשק Spotnana ולוחץ על אימות.
  • ממשק המשתמש של Spotnana שולח בקשה ל-IdP של Spotnana כדי לאמת את ה-OTP ולהנפיק אסימון Bearer לכניסה.
  • אסימון ה-Bearer נוצר ומוחזר לממשק Spotnana. המשמעות היא שהמשתמש אומת בהצלחה ויכול להיכנס לפלטפורמת Spotnana באמצעות האסימון.
4
  • לאחר שהמשתמש אומת בשלב 3, כל בקשות ה-API הבאות חייבות לכלול את אסימון ה-Bearer, את orgIdואת tmcId בכותרת הבקשה.
  • אסימון ה-Bearer נבדק בכל בקשת API, והתגובה נשלחת חזרה לממשק המשתמש של Spotnana.


אימות מבוסס IdP

Spotnana תומכת באימות דרך ספקי זהות חיצוניים (IdP) כגון Google, Azure וספקים בהתאמה אישית באמצעות OpenID Connect ופרוטוקולי SAML. התרשים והשלבים הבאים מסבירים את תהליך האימות מבוסס IdP.

איור: תרשים זרימה של תהליך האימות מבוסס IdP.


שלבמהלך התהליך
משתמש מתחבר דרך OBT או אפליקציית Spotnana באמצעות כתובת האימייל שלו.
1
  • ממשק המשתמש של Spotnana שולח בקשת API לשרת Spotnana כדי לקבל את הגדרות האימות של המשתמש. הבקשה כוללת את פרטי ההתחברות של המשתמש.
  • בתשובה יתקבלו tmcId, orgIdו- authProviderType.
2

ממשק המשתמש של Spotnana מפנה את הבקשה ל-IdP של Spotnana.

3

IdP של Spotnana מפנה את הבקשה ל-IdP של השותף. בכך מתחיל תהליך האימות אצל ספק הזהות של השותף.

הערה: בכל הפניה (Redirect) מוחזר קוד סטטוס 302, שמעיד על הפניה לכתובת URL שונה.
4

נוצרה תקשורת בין IdP של Spotnana ל-IdP של השותף, כדי לוודא שהמשתמש אומת אצל ספק הזהות של השותף.

הערה: במהלך תקשורת זו, IdP של Spotnana שולח את clientId ו- clientSecret כנתונים מקודדים (form URL-encoded) בבקשת API ל-IdP של השותף. אם השרת של IdP לא תומך בפורמט זה, שרת Spotnana יכול לשמש כמתווך ולתרגם את הנתונים לפורמט שהשותף תומך בו.
5

IdP של השותף מאמת בהצלחה את המשתמש.

הערה: לאחר שלב זה, יש לבצע אימות נוסף של פרופיל המשתמש באמצעות אסימון Bearer.
5 א'

לאחר האימות, התגובה מ-IdP של השותף נשלחת ל-IdP של Spotnana.

5 ב'

IdP של Spotnana מנפיק קוד ייחודי לפרופיל המשתמש ושולח אותו לממשק המשתמש של Spotnana.

6
  • ממשק המשתמש של Spotnana שולח בקשת API ל-IdP של Spotnana עם clientID והקוד שהתקבל בשלב 5(ב).
  • IdP של Spotnana מנפיק אסימון Bearer חדש ושולח אותו לממשק המשתמש.
הערה: הנפקת אסימון Bearer בהצלחה מעידה שהמשתמש אומת ויכול לגשת ל-Spotnana.
7
  • לאחר שהמשתמש אומת בשלב 6, כל בקשות ה-API הבאות חייבות לכלול את אסימון ה-Bearer, את orgIdואת tmcId בכותרת הבקשה.
  • אסימון ה-Bearer נבדק בכל בקשת API, והתגובה נשלחת חזרה לממשק המשתמש של Spotnana.


אימות מבוסס API

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

איור: תרשים זרימה של תהליך האימות מבוסס API.


שלבמהלך התהליך
1

משתמש ה-API שולח בקשת POST לנקודת הקצה get-auth-token(clientId,clientSecret) בשרת Spotnana כדי להנפיק ולקבל אסימון Bearer זמני.

להלן דוגמה לבקשת cUrl שניתן להשתמש בה מול נקודת הקצה get-auth-token :

curl -i -X POST \
https://api.spotnana.com/get-auth-token \
-H 'Content-Type: application/json' \
-d '{
  "clientId": "sample-apiuser@tmcorg.com",
  "clientSecret": "<password>"
}'
הערה: יש להחליף את ערכי clientId ו- clientSecret בפרטי ההתחברות שקיבלתם מ-Spotnana. 
2
  • שרת Spotnana מפעיל את המתודה getToken(clientId,clientSecret) ב-IdP של Spotnana, שמנפיקה אסימון bearerToken ושולחת אותו לשרת Spotnana.
  • שרת Spotnana שולח את אסימון ה-Bearer כתגובה בפורמט JSON למשתמש ה-API.


לאחר קבלת האסימון, כל הבקשות ל-API של Spotnana (למשל Trip APIs) חייבות לכלול את אסימון ה-Bearer בכותרת לצורכי הרשאה. 

הערה: נקודת הקצה get-auth-token(clientId, clientSecret) מוגבלת ל-100 קריאות API לכל 5 דקות.


אימות מבוסס iFrame

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

הערה: באימות מבוסס iFrame, המשתמש שמבצע את הכניסה יכונה caller. זאת כדי לאפשר תרחישים בהם משתמש API/מכונה מבצע כניסה ומבקש אסימון עבור משתמש אחר. משתמש זה יכול להשתמש בפרטי מנהל TMC כדי להתחבר ישירות לשרת Spotnana. לכן, נשתמש במונח caller כמונח כללי, שיכול להתייחס למשתמש שנכנס לפרופיל שלו או למשתמש API/מכונה שמבקש אסימון עבור משתמש אחר.


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

איור: תרשים זרימה של תהליך האימות מבוסס iFrame באמצעות החלפת אסימונים.


שלבמהלך התהליך
ה-caller נכנס דרך ממשק המשתמש של השותף.
1ממשק המשתמש של השותף מציג את ממשק Spotnana בתוך iFrame.
2ממשק Spotnana שולח בקשה לממשק השותף (Post Message) לקבלת אסימונים, עם type=TOKEN_EXCHANGE_REQUEST.
3

ממשק השותף שולח בקשת API לשרת השותף כדי לקבל אסימון OAuth, וכך מתחיל רצף שלבים נוסף בתהליך האימות.

3 א'

שרת השותף פונה לשרת Spotnana עם פרטי המשתמש ואסימון הנושא (subject token). שרת Spotnana בודק אם הבקשה התקבלה ממשתמש API/מכונה.

3 ב'
  • שרת Spotnana פונה לשרת השותף כדי לקבל את כתובת האימייל של הנושא (caller).
  • כתובת האימייל נשלפת ומועברת לשרת Spotnana, כדי לזהות את המשתמש.
3 ג'
  • שרת Spotnana שולח לשרת השותף את התגובה לבקשת ה-API מהשלב הראשון, הכוללת את אסימון הגישה ואסימון הרענון.
  • הפרטים מועברים לאחר מכן לממשק המשתמש של השותף.
4

ממשק המשתמש של השותף שולח את האסימון לממשק Spotnana באמצעות Post Message עם type=TOKEN_EXCHANGE_RESPONSE.

5
  • ממשק Spotnana שולח בקשת API לשרת Spotnana להנפקת אסימון Bearer חדש.
  • אסימון ה-Bearer מונפק על ידי שרת Spotnana ומוחזר לממשק Spotnana.
הערה: הנפקת אסימון Bearer בהצלחה מעידה שהמשתמש אומת ויכול לגשת ל-Spotnana.
6
  • לאחר שהמשתמש אומת בשלב 3, כל בקשות ה-API הבאות חייבות לכלול את אסימון ה-Bearer, את orgIdואת tmcId בכותרת הבקשה.
  • אסימון ה-Bearer נבדק בכל בקשת API, והתגובה נשלחת חזרה לממשק המשתמש של Spotnana.


אימות מבוסס קוד הרשאה

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

איור: תרשים זרימה של תהליך האימות מבוסס קוד הרשאה.


שלבמהלך התהליך
1

ממשק המשתמש של השותף פונה לשרת השותף כדי לקבל קוד הרשאה עבור ה-caller. הקוד נשלח חזרה לממשק המשתמש של השותף.

2

ממשק המשתמש של השותף שולח בקשה לממשק Spotnana באמצעות כתובת הפניה ייעודית, הכוללת את tmcId ו- authCode כפרמטרים.

3

ממשק Spotnana מבצע קריאת POST ל-API של שרת Spotnana בכתובת v2/auth/token/companies/<tmcId>(authCode) .

3 א'
  • שרת Spotnana פונה לשרת השותף כדי לקבל את pid של המשתמש באמצעות קוד ההרשאה.
  • ה- pid של המשתמש נשלף ומועבר לשרת Spotnana.
3 ב'

שרת Spotnana מנפיק את אסימון הגישה ואסימון הרענון, ושולח אותם לממשק Spotnana.

4
  • ממשק Spotnana שולח בקשה לשרת Spotnana באמצעות אסימון הגישה ואסימון הרענון כדי להנפיק אסימון Bearer לגישה.
  • אסימון Bearer מונפק ונשלח לממשק Spotnana.
הערה: הנפקת אסימון Bearer בהצלחה מעידה שהמשתמש אומת ויכול לגשת ל-Spotnana.
5
  • לאחר שהמשתמש אומת בשלב 4, כל בקשות ה-API הבאות חייבות לכלול את אסימון ה-Bearer, את orgIdואת tmcId בכותרת הבקשה.
  • אסימון ה-Bearer נבדק בכל בקשת API, והתגובה נשלחת חזרה לממשק המשתמש של Spotnana.


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


אימות בין מכונות (M2M)

שיטת M2M מתאימה כאשר תהליך האימות כולל אפליקציה שמבצעת קריאה לכתובת Callback של צד שלישי כדי להנפיק עבור המשתמש accessToken . התרשים הבא מציג את מהלך האימות בשיטה זו.

איור: תרשים זרימה של תהליך האימות בין מכונות (M2M).


שלבמהלך התהליך
המפתחות הציבוריים של כל האפליקציות המשתתפות בתהליך האימות מסונכרנים בין שרת Spotnana ל-IdP של Spotnana. מפתחות אלו ישמשו לאימות אסימון הגישה בהמשך.
1

שרת השותף שולח בקשת API אל /oauth2/token(clientId,clientSecret) ב-IdP של Spotnana כדי להנפיק אסימון Bearer. האסימון החדש נשלח חזרה לשרת השותף.

2
  • שרת השותף שולח בקשת API לכתובת Callback של צד שלישי כדי להנפיק עבור המשתמש אסימון גישה.
  • אסימון הגישה מונפק ונשלח לשרת Spotnana.
3
  • שרת Spotnana מאמת את חתימת אסימון הגישה באמצעות המפתחות הציבוריים שסונכרנו מראש. בנוסף, נבדק claim_id כדי לוודא את זהות השותף.
  • אסימון הגישה נשלח לשרת השותף כדי לאמת את המשתמש.




האם מאמר זה היה מועיל?

נהדר!

תודה על המשוב

מצטערים! לא יכולנו לעזור

תודה על המשוב

Liquid error: 822: unexpected token at '{ "label": "כתובת הדוא"ל שלך", "type": "email", "name": "helpdesk_ticket[email]", "id": "helpdesk_ticket_email", "required" : "true" } '

ספרו לנו כיצד נוכל לשפר את המאמר הזה!

בחרו לפחות אחת מהסיבות
אימות CAPTCHA נדרש.

המשוב נשלח

אנו מעריכים את המאמץ שלכם וננסה לתקן את המאמר