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

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

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

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

פרטים חשובים

בניגוד למפתחות 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 דקות עד שהנתונים יתעדכנו. אם חותמת הזמן היא יותר מדי בעבר או בעתיד, יכול להיות שהשרת ידווח על שגיאה.

אקספוננט

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

הרשאה

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

אם מציינים 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.

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