אסימוני אינטרנט JSON

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

ב-Fleet Engine נדרש שימוש בטוקנים של JSON Web‏ (JWT) לקריאות של שיטות API מסביבות עם רמת אמון נמוכה: סמארטפונים ודפדפנים.

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

פרטים חשובים

בניגוד למפתחות API, אסימוני JWT הם לזמן קצר ומגבילים את הפעולות רק לאלה שהתפקיד מורשה לבצע. מידע נוסף על אסימוני JWT זמין במאמר JSON Web Tokens בוויקיפדיה. מידע מפורט על תפקידי גישה זמין במאמר תפקידים בחשבונות שירות במדריך הזה.

רכיבי JWT

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

בטבלה הבאה מפורטים השדות של JWT באופן כללי, וגם מידע ספציפי על המקומות שבהם אפשר למצוא את הערכים של השדות האלה בפרויקט Fleet Engine Cloud.

שדות בכותרת JWT

שדה

תיאור

alg

האלגוריתם שבו יש להשתמש. ‫`RS256`.

typ

סוג האסימון. ‫`JWT`.

ילדים

המזהה של המפתח הפרטי של חשבון השירות. אפשר למצוא את הערך הזה בשדה private_key_id בקובץ ה-JSON של חשבון השירות. חשוב להשתמש במפתח מחשבון שירות עם רמת ההרשאות הנכונה.

שדות של טענות JWT

שדה

תיאור

iss

כתובת האימייל של חשבון השירות, שמופיעה בשדה client_email בקובץ ה-JSON של חשבון השירות.

sub

כתובת האימייל של חשבון השירות, שמופיעה בשדה client_email בקובץ ה-JSON של חשבון השירות.

aud

חשבון השירות שלך SERVICE_NAME, במקרה הזה https://fleetengine.googleapis.com/

IAT

חותמת הזמן שבה נוצר ה-JWT, שמוגדרת בשניות שחלפו מאז 00:00:00 UTC, January 1, 1970. ההטיה נמשכת 10 דקות. אם חותמת הזמן רחוקה מדי בעבר או בעתיד, יכול להיות שהשרת ידווח על שגיאה.

exp

חותמת הזמן שבה יפוג התוקף של ה-JWT, שצוינה בשניות שעברו מאז 00:00:00 UTC, January 1, 1970. הבקשה תיכשל אם חותמת הזמן תהיה יותר משעה בעתיד.

הרשאה

בהתאם לתרחיש השימוש, יכול להיות שהערך יהיה deliveryvehicleid, trackingid, taskid או taskids.

אם מציינים taskids, היקף ההרשאה צריך להיות מערך באחד מהפורמטים הבאים:

"taskids": ["task_id_one","task_id_two"]

או

"taskids": ["*"]

מידע מ-JWT ב-Fleet Engine

‫Fleet Engine משתמש בטענות פרטיות. שימוש בטענות פרטיות מבטיח שרק לקוחות מורשים יוכלו לגשת לנתונים שלהם.

לדוגמה, כששרת מנפיק אסימון אינטרנט מסוג JSON למכשיר נייד של נהג, הוא צריך להכיל את ההצהרה 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.

המאמרים הבאים