/

בהמשך לפינתנו הקודמת על OAuth היום נדבר על JWT . נתחיל בהסבר קצר על מה זה ונמשיך ביתרונות של שיטה זו על הזדהות ומתן הרשאות על בסיס User Name and Password .

התהליך:

השיטה נקראת JWT או בשמה המלא Json Web Token והיא משמשת לניהול Authorization & Authentication . בשלב הראשון הלקוח מבצע לוגאין באתר, לאחר שהשרת בדק שללקוח יש אישור לגשת למשאבים שהשרת מספק השרת מייצר json Token עם מפתח הצפנה ששמור בשרת ושולח אותו ללקוח. לאחר מכן בכל פניה של הלקוח לשרת השרת מבצע תהליך Decryption באמצעות המפתח שיש לו ובודק האם ה json Token השתנה. אם כן מחזיר שגיאה ואם לא אז לפי נתוני הלקוח שמוצפנים בטוקן בודק אלו הרשאות יש לו.

מבנה הטוקן:

הטוקן מורכב משלושה חלקים המופרדים בנקודה. חלק ראשון (JWT Header) מכיל הגדרות של הקובץ כגון שיטת הצפנה וסוג קובץ (jwt). חלק שני (JWT payload) מכיל את נתוני הלקוח כגון שם פרטי, שם משפחה ועוד.. חלק שלישי (JWT signature) מכיל את את החלק הראשון והשני מקודדים יחד באמצעות שיטת הקידוד המוגדרת ב- JWT Header לפי המפתח שנמצא רק בשרת.

יתרונות:

  • בשונה מניהול באמצעות session כאן לא נשמר שום מידע בשרת מלבד המפתח עצמו ולכן אין צורך בחיפוש ה-session id כך שתהליך הבדיקה בשרת קצר יותר.

  • ניתן לשתף את המפתח בכמה שרתים ובכך לאפשר ללקוח גישה למספר שרתים. למשל אם רוצים לנהל עומסים ומחלקים את תהליך ה-Authorization למספר שרתים.

  • ניתן להגדיר זמן תפוגה לטוקן כך שבאופן אוטומטי ידרש להתעדכן מול השרת ולקבל טוקן חדש. אפשרות זו מקשה על אפשרות של גניבה של הטוקן ושימוש חוזר ע"י אנשים לא מורשים.

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