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

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

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

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

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

רכיבי JWT

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

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

שדות של כותרות JWT

שדה

תיאור

אלג

האלגוריתם שבו צריך להשתמש. 'RS256'.

הקלדה

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

ילד

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

שדות של הצהרות JWT

שדה

תיאור

iss

כתובת האימייל של חשבון השירות שלכם, שנמצאת בקטע השדה client_email בקובץ JSON של חשבון השירות.

sub

כתובת האימייל של חשבון השירות שלכם, שנמצאת בקטע השדה client_email בקובץ JSON של חשבון השירות.

אוד

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 נעשה שימוש בהצהרות פרטיות. השימוש בתלונות פרטיות מבטיח שרק לקוחות מורשים יכולים לגשת לנתונים שלהם.

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

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

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

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

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

  • deliveryvehicleid

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

  • taskid

    שימוש בזמן קריאה לממשקי API לכל משימה.

  • taskids

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

  • trackingid

    לשימוש במהלך קריאה GetTaskTrackingInfoAPI התלונה חייבת להתאים למעקב המזהה בבקשה. אין לכלול delivervehicleid, taskid או taskids תלונות.

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