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