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

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

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

הקצה העורפי צריך לבצע אימות והרשאה מול Fleet Engine באמצעות מנגנונים רגילים של Application Default Credentials. חשוב להשתמש באסימוני JWT שנחתמו על ידי חשבון שירות מתאים. רשימה של תפקידים בחשבונות שירות מופיעה במאמר תפקידים בחשבונות שירות של Fleet Engine בקטע יסודות של Fleet Engine.

לעומת זאת, הקצה העורפי צריך לבצע אימות והרשאה מול Fleet Engine באמצעות מנגנונים רגילים של Application Default Credentials.

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

רכיבי JWT

אסימוני JWT מכילים כותרת וקטע הצהרה. קטע הכותרת מכיל מידע כמו המפתח הפרטי שהתקבל מחשבונות השירות ואלגוריתם ההצפנה. הקטע של ההצהרה מכיל מידע כמו זמן היצירה של ה-JWT, משך החיים, השירותים שה-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": ["task_id_one","task_id_two"]

או

"taskids": ["*"]

הצהרות JWT של Fleet Engine

ב-Fleet Engine נעשה שימוש בהצהרות בעלות פרטיות. שימוש בטענות נכונות (claims) פרטיות מבטיח שרק לקוחות מורשים יכולים לגשת לנתונים שלהם.

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

מערכת Fleet Engine משתמשת בהצהרות הפרטיות הבאות:

נסיעות על פי דרישה

  • vehicleid:
    • טענת הנכונות הזו תמיד משמשת את Driver SDK, בין אם מדובר בנסיעה ובין אם ברכב. הקצה העורפי של Fleet Engine מוודא שהרכב משויך לנסיעה המבוקשת לפני ביצוע השינוי.
    • ה-JWT יכול לכסות גם פעולות של כלי רכב וגם פעולות של נסיעה, גם אם לא נדרש, וכך לפשט את ההטמעה של החתימה על JWT.
  • tripid:
    • טענת הנכונות הזו תמיד משמשת את Consumer SDK.
    • ה-JWT יכול לכסות גם פעולות של כלי רכב וגם פעולות של נסיעות, גם אם לא נדרש, וכך לפשט את ההטמעה של החתימה על האסימון.

משימות מתוזמנות

  • deliveryvehicleid

    משתמשים בזה כשקוראים לממשקי API לכל כלי מסירה.

  • taskid

    משתמשים באפשרות הזו כשקוראים לממשקי API לכל משימה.

  • taskids

    משתמשים בה כשקוראים ל-BatchCreateTasksAPI. ההצהרה הזו צריכה להיות בפורמט מערך, והמערך צריך להכיל את כל מזהי המשימות הנדרשים להשלמת הבקשה. אין לכלול הצהרות delivervehicleid,‏ trackingid או taskid.

  • trackingid

    משתמשים בה כשקוראים לפונקציה GetTaskTrackingInfoAPI. ההצהרה צריכה להתאים למזהה המעקב בבקשה. אסור לכלול הצהרות delivervehicleid,‏ taskid או taskids.

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