אסימון JWT (JSON Web Token) הוא תקן אינטרנט פתוח שמשמש לאימות ולאישור של חילופי מידע בין לקוח לשרת. כשמשתמש באפליקציה נכנס בפעם הראשונה באמצעות פרטי הכניסה המתאימים לתפקיד, השרת יוצר JWT מקודד עם חתימה דיגיטלית ומחזיר אותו לשימוש בבקשות הבאות. במהלך התהליך הזה, המשתמש מאומת ומקבל הרשאה לגשת למסלולים, לשירותים ולמשאבים על סמך התפקיד שלו בחשבון.
ב-Fleet Engine נדרש שימוש בטוקנים של JSON Web (JWT) לקריאות של שיטות API מסביבות עם רמת אמון נמוכה: סמארטפונים ודפדפנים.
אסימון JWT נוצר בשרת שלכם, נחתם, מוצפן ומועבר ללקוח לצורך אינטראקציות עתידיות עם השרת, עד שהוא יפוג או יפסיק להיות תקף.
פרטים חשובים
- משתמשים ב-Application Default Credentials כדי לבצע אימות ולקבל הרשאה ב-Fleet Engine.
- משתמשים בחשבון שירות מתאים כדי לחתום על אסימוני JWT. מידע נוסף על תפקידים בחשבון השירות של Fleet Engine זמין במאמר יסודות Fleet Engine.
בניגוד למפתחות API, אסימוני JWT הם קצרי טווח ומגבילים את הפעולות רק לאלה שהתפקיד מורשה לבצע. למידע נוסף על אסימוני JWT, תוכלו לעיין במאמר JSON Web Tokens בוויקיפדיה. מידע מפורט על תפקידי גישה זמין במאמר תפקידים בחשבונות שירות במדריך הזה.
רכיבי JWT
אסימוני JWT מכילים כותרת וקטע הצהרה. קטע הכותרת מכיל מידע כמו המפתח הפרטי שהתקבל מחשבונות שירות, ואלגוריתם ההצפנה. הקטע של הטענה מכיל מידע כמו זמן היצירה של ה-JWT, אורך החיים (TTL) שלו, השירותים שלטענת ה-JWT יש גישה אליהם ומידע אחר על הרשאה להגדרת היקף הגישה. לדוגמה, מזהה רכב המשלוחים.
בטבלה הבאה מפורטים השדות של JWT באופן כללי, וגם מידע ספציפי על המיקום שבו אפשר למצוא את הערכים של השדות האלה בפרויקט Fleet Engine Cloud.
שדה |
תיאור |
|---|---|
alg |
האלגוריתם שבו יש להשתמש. `RS256`. |
typ |
סוג האסימון. `JWT`. |
ילד/ה |
המזהה של המפתח הפרטי של חשבון השירות. אפשר למצוא את הערך הזה בשדה |
שדה |
תיאור |
|---|---|
iss |
כתובת האימייל של חשבון השירות, שמופיעה בשדה |
sub |
כתובת האימייל של חשבון השירות, שמופיעה בשדה |
aud |
ערך המדד ' |
IAT |
חותמת הזמן שבה נוצר ה-JWT, שמוגדרת בשניות שחלפו מאז 00:00:00 |
exp |
חותמת הזמן שבה יפוג התוקף של ה-JWT, שצוינה בשניות שעברו מאז |
הרשאה |
בהתאם לתרחיש השימוש, יכול להיות שהמאפיין יכיל את הערכים אם מציינים taskids, היקף ההרשאה צריך להיות מערך באחד מהפורמטים הבאים: "taskids": ["task_id_one","task_id_two"]
או "taskids": ["*"] |
מידע מ-JWT ב-Fleet Engine
Fleet Engine משתמש בטענות פרטיות. שימוש בטענות פרטיות מבטיח שרק לקוחות מורשים יוכלו לגשת לנתונים שלהם.
לדוגמה, כששרת מנפיק אסימון JSON Web Token למכשיר הנייד של נהג, הוא צריך להכיל את ההצהרה vehicleid או את ההצהרה deliveryvehicleid עם הערך של מזהה הרכב של הנהג. לאחר מכן, בהתאם לתפקיד הנהג, אסימוני ה-JWT מאפשרים גישה רק למזהה הרכב הספציפי ולא למזהה רכב שרירותי אחר.
Fleet Engine משתמש בהצהרות הפרטיות הבאות:
נסיעות על פי דרישה
-
vehicleid:- ה-Driver SDK תמיד משתמש בטענה הזו, בין אם הוא פועל בנסיעה או ברכב. הקצה העורפי של Fleet Engine מוודא שהרכב משויך לנסיעה המבוקשת לפני ביצוע השינוי.
- קובץ ה-JWT יכול לכלול פעולות שקשורות לרכב ולנסיעה, גם אם זה לא נדרש, וכך לפשט את ההטמעה של חתימת ה-JWT.
-
tripid:- ה-SDK לצרכנים תמיד משתמש בטענה הזו.
- אפשר להשתמש ב-JWT גם לפעולות שקשורות לרכב וגם לפעולות שקשורות לנסיעה, גם אם זה לא נדרש. כך אפשר לפשט את ההטמעה של חתימת האסימון.
משימות מתוזמנות
-
deliveryvehicleidמשתמשים בו כשקוראים לממשקי API של כלי רכב למסירה.
-
taskidמשתמשים בו כשמפעילים ממשקי API לכל משימה.
-
taskidsשימוש ב-
BatchCreateTasksAPIלשיחות. התביעה הזו צריכה להיות בפורמט של מערך, והמערך צריך לכלול את כל מזהי המשימות שנדרשים להשלמת הבקשה. אל תכללו טענות לגביdelivervehicleid,trackingidאוtaskid. -
trackingidכדאי להשתמש בפידים כשמתקשרים אל
GetTaskTrackingInfoAPI. המזהה של התלונה חייב להיות זהה למזהה המעקב שבבקשה. אל תכללו טענות לגביdelivervehicleid,taskidאוtaskids.
המאמרים הבאים
- כדי להבין את תהליך האימות המלא, אפשר לקרוא על עיצוב האבטחה ב-Fleet Engine.
- איך מנפיקים טוקנים של JSON Web מהשרת