מדריך מצויר ל-OAuth ו-OpenID Connect

הערה. תרגום: המאמר הנהדר הזה של Okta מסביר כיצד OAuth ו- OIDC (OpenID Connect) פועלים בצורה פשוטה וברורה. ידע זה יהיה שימושי למפתחים, מנהלי מערכות ואפילו "משתמשים רגילים" של אפליקציות אינטרנט פופולריות, שככל הנראה גם מחליפים נתונים סודיים עם שירותים אחרים.

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

מדריך מצויר ל-OAuth ו-OpenID Connect
"תן לי את חשבון הבנק שלך." "אנחנו מבטיחים שהכל יהיה בסדר עם הסיסמה והכסף. זה כנה, כנה!" *חי חי*

חֲרָדָה! אף אחד לא צריך לדרוש ממשתמש לשתף שם משתמש וסיסמה, אישורים, עם שירות אחר. אין ערובה שהארגון שעומד מאחורי שירות זה ישמור על אבטחת הנתונים ולא יאסוף מידע אישי יותר מהנדרש. זה אולי נשמע מטורף, אבל אפליקציות מסוימות עדיין משתמשות בתרגול הזה!

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

מדריך מצויר ל-OAuth ו-OpenID Connect

אגב, המדריך הזה זמין גם בפורמט וידאו:

הפעל וידאו

גבירותיי ורבותיי, ברוכים הבאים: OAuth 2.0

OAuth 2.0 הוא תקן אבטחה המאפשר לאפליקציה אחת לקבל הרשאה לגשת למידע באפליקציה אחרת. רצף שלבים למתן היתר [רְשׁוּת] (או הַסכָּמָה [הַסכָּמָה]) מתקשרים לעתים קרובות הרשאה [הרשאה] או אפילו הרשאה מאצילה [הרשאה מואצלת]. עם תקן זה, אתה מאפשר לאפליקציה לקרוא נתונים או להשתמש בפונקציות של אפליקציה אחרת בשמך מבלי לתת לה את הסיסמה שלך. מעמד!

כדוגמה, נניח שאתה מגלה אתר בשם "Unlucky Pun of the Day" [משחק מילים נורא של היום] והחליט להירשם אליו כדי לקבל משחקי מילים יומיומיים בצורת הודעות טקסט בטלפון. מאוד אהבת את האתר, והחלטת לשתף אותו עם כל החברים שלך. אחרי הכל, כולם אוהבים משחקי מילים מפחידים, נכון?

מדריך מצויר ל-OAuth ו-OpenID Connect
"משחק מילים מצער של היום: שמעת על הבחור שאיבד את החצי השמאלי של גופו? עכשיו הוא תמיד צודק!" (תרגום משוער, כי למקור יש משחק מילים משלו - בערך תרגום)

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

מדריך מצויר ל-OAuth ו-OpenID Connect
"כולם אוהבים משחקי מילים! - כבר מחובר? "האם תרצה לאפשר לאתר Terrible Pun of the Day לגשת לרשימת אנשי הקשר שלך? - תודה! מעתה ואילך נשלח תזכורות בכל יום לכל מי שאתה מכיר, עד קץ הימים! אתה החבר הכי טוב!"

  1. בחר את שירות הדוא"ל שלך.
  2. במידת הצורך, עבור אל אתר הדואר והיכנס לחשבונך.
  3. תן ל-Trible Pun of the Day הרשאה לגשת לאנשי הקשר שלך.
  4. חזור לאתר משחק המילים הנורא של היום.

במקרה שתשנה את דעתך, יישומים המשתמשים ב-OAuth מספקים גם דרך לבטל גישה. לאחר שתחליט שאינך רוצה יותר לשתף אנשי קשר עם Terrible Pun of the Day, תוכל להיכנס לאתר הדואר ולהסיר את אתר משחק המילים מרשימת היישומים המורשים.

זרימת OAuth

זה עתה עברנו את מה שנקרא בדרך כלל זְרִימָה [זְרִימָה] OAuth. בדוגמה שלנו, זרימה זו מורכבת משלבים גלויים, וכן מספר שלבים בלתי נראים, שבהם שני שירותים מסכימים על החלפת מידע מאובטחת. הדוגמה הקודמת של Terrible Pun of the Day משתמשת בזרימת ה-OAuth 2.0 הנפוצה ביותר, הידועה כזרימת "קוד ההרשאה". [זרימת "קוד הרשאה"].

לפני שנצלול לפרטים של אופן הפעולה של OAuth, בואו נדבר על המשמעות של כמה מונחים:

  • בעל משאבים:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    זה אתה! אתה הבעלים של האישורים שלך, הנתונים שלך ושולט בכל הפעילויות שעשויות להתבצע בחשבונות שלך.

  • לקוח:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    אפליקציה (לדוגמה, שירות משחק המילים הנורא של היום) שרוצה לגשת או לבצע פעולות מסוימות בשם בעל משאבים'א.

  • שרת הרשאה:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    האפליקציה שיודעת בעל משאבים'א ובו u בעל משאביםיש כבר חשבון.

  • שרת משאבים:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    ממשק תכנות יישומים (API) או שירות זה לקוח רוצה להשתמש מטעם בעל משאבים'א.

  • הפנייה מחדש של URI:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    הקישור ש שרת הרשאה יפנה מחדש בעל משאבים'ואחרי מתן רשות לקוח'בְּ. לפעמים זה מכונה "כתובת האתר להתקשרות חוזרת".

  • סוג תגובה:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    סוג המידע הצפוי להתקבל לקוח. הנפוץ ביותר סוג תגובה'אוהם זה הקוד, כלומר לקוח מצפה לקבל קוד אימות.

  • היקף:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    זהו תיאור מפורט של ההרשאות הנדרשות לקוח'y, כגון גישה לנתונים או ביצוע פעולות מסוימות.

  • הסכמה:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    שרת הרשאה לוקח סקופסביקש לקוחאה, ושואל בעל משאביםא, האם הוא מוכן לספק לקוחיש את ההרשאות המתאימות.

  • זיהוי הלקוח:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    מזהה זה משמש לזיהוי לקוח'א על שרת הרשאהה.

  • סוד הלקוח:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    זו הסיסמה שרק ידועה לקוחאתה ו שרת הרשאה'בְּ. זה מאפשר להם לשתף מידע באופן פרטי.

  • קוד אימות:

    מדריך מצויר ל-OAuth ו-OpenID Connect

    קוד זמני עם תקופת תוקף קצרה, אשר לקוח מספק שרת הרשאה'י בתמורה ל אסימון גישה.

  • אסימון גישה:

    מדריך מצויר ל-OAuth ו-OpenID Connect

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

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

כעת, לאחר שכיסינו את מושגי הליבה של OAuth 2.0, בואו נחזור לדוגמא שלנו ונסתכל מקרוב על מה שקורה בזרימת OAuth.

מדריך מצויר ל-OAuth ו-OpenID Connect

  1. אתה, בעל משאבים, אתה רוצה לספק את שירות משחק המילים הנורא של היום (לקוחy) גישה לאנשי הקשר שלך כדי שיוכלו לשלוח הזמנות לכל החברים שלך.
  2. לקוח מפנה את הדפדפן לדף שרת הרשאה'א ולכלול בשאילתה זיהוי הלקוח, הפנייה מחדש של URI, סוג תגובה ואחד או יותר סקופס (הרשאות) שהוא צריך.
  3. שרת הרשאה מאמת אותך, מבקש שם משתמש וסיסמה במידת הצורך.
  4. שרת הרשאה מציג טופס הסכמה (אישורים) עם רשימה של כולם סקופסביקש לקוח'אומ. אתה מסכים או מסרב.
  5. שרת הרשאה מפנה אותך לאתר לקוח'א, באמצעות הפנייה מחדש של URI עם קוד אימות (קוד אימות).
  6. לקוח מתקשר ישירות עם שרת הרשאה'אוהם (עוקף את הדפדפן בעל משאבים'א) ושולח בבטחה זיהוי הלקוח, סוד הלקוח и קוד אימות.
  7. שרת הרשאה בודק את הנתונים ומגיב עם אסימון גישה'om (אסימון גישה).
  8. עכשיו לקוח יכול להשתמש אסימון גישה לשלוח בקשה אליו שרת משאבים כדי לקבל רשימה של אנשי קשר.

זיהוי לקוח וסוד

הרבה לפני שהרשית למשחק המילים הנורא של היום לגשת לאנשי הקשר שלך, שרת הלקוח וההרשאות יצרו קשרי עבודה. שרת ההרשאות יצר את מזהה הלקוח ואת סוד הלקוח (נקרא לפעמים App ID и סוד האפליקציה) ושלחו אותם ללקוח להמשך אינטראקציה בתוך OAuth.

מדריך מצויר ל-OAuth ו-OpenID Connect
"- שלום! הייתי רוצה לעבוד איתך! - בטח, אין בעיה! הנה זיהוי הלקוח והסוד שלך!"

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

אבל זה לא הכל... אנא ברוך הבא ל-OpenID Connect!

OAuth 2.0 מיועד רק עבור הרשאה - כדי לספק גישה לנתונים ולפונקציות מאפליקציה אחת לאחרת. OpenID Connect (OIDC) היא שכבה דקה על גבי OAuth 2.0 שמוסיפה את פרטי הכניסה והפרופיל של המשתמש שנכנס לחשבון. הארגון של פגישת התחברות מכונה לעתים קרובות אימות [אימות], ומידע על המשתמש המחובר למערכת (כלומר בערך בעל משאבים'ה), - מידע אישי [זהות]. אם שרת ההרשאות תומך ב-OIDC, הוא מכונה לפעמים ספק של נתונים אישיים [ספק זהות]כי זה מספק לקוח'יש מידע על בעל משאביםה.

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

מדריך מצויר ל-OAuth ו-OpenID Connect

הזרימה (הזרימה) OpenID Connect נראית זהה למקרה של OAuth. ההבדל היחיד הוא שבבקשה הראשית, ההיקף הספציפי בו נעשה שימוש הוא openid, - א לקוח בסופו של דבר נהיה כמו אסימון גישהו - אסימון מזהה.

מדריך מצויר ל-OAuth ו-OpenID Connect

בדיוק כמו בזרימת OAuth, אסימון גישה ב-OpenID Connect, זהו ערך כלשהו שאינו ברור לקוח'בְּ. מנקודת מבט לקוחאסימון גישה מייצג מחרוזת תווים המועברת יחד עם כל בקשה אל שרת משאבים'y, שקובע אם האסימון תקף. אסימון מזהה מייצג דבר אחר לגמרי.

ID Token הוא JWT

אסימון מזהה הוא מחרוזת תווים בפורמט מיוחד המכונה JSON Web Token או JWT (לפעמים אסימוני JWT מבוטאים כמו "סימנים"). למשקיפים מבחוץ, JWT אולי נראה כמו ג'יבריש לא מובן, אבל לקוח יכול לחלץ מידע שונה מה-JWT, כגון מזהה, שם משתמש, זמן התחברות, תאריך תפוגה אסימון מזההא, נוכחותם של ניסיונות להפריע ל-JWT. נתונים בפנים אסימון מזההנקראים יישומים [טוען].

מדריך מצויר ל-OAuth ו-OpenID Connect

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

למידע נוסף על OAuth ו-OIDC

אז, סקרנו בקצרה כיצד פועלים OAuth ו- OIDC. מוכנים לחפור יותר לעומק? הנה משאבים נוספים שיעזרו לך ללמוד עוד על OAuth 2.0 ו-OpenID Connect:

כמו תמיד, אתם מוזמנים להגיב. כדי להתעדכן בחדשות האחרונות שלנו, הירשם ל טויטר и YouTube Okta למפתחים!

נ.ב מהמתרגם

קרא גם בבלוג שלנו:

מקור: www.habr.com

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster