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