לפני שמשתמשים בספריית JavaScript למעקב אחרי צי כלי רכב, חשוב להכיר את Fleet Engine ולהגדיר אותו. לפרטים נוספים, ראו Fleet Engine.
במסמך הזה מוסבר איך מפעילים הרשאה בין האפליקציה בדף האינטרנט לבין Fleet Engine. אחרי שתגדירו את הבקשות ל-Fleet Engine עם אסימוני ההרשאה הנכונים, תוכלו לעקוב אחרי רכב במפה.
הגדרת הרשאה
בקריאות לשיטות API מסביבות עם רמת אמון נמוכה, מערכת Fleet Engine דורשת שימוש באסימוני JWT (JSON Web Tokens) בחתימה של חשבון שירות מתאים. סביבות עם רמת אמון נמוכה כוללות סמארטפונים ודפדפנים. JWT נוצר בשרת שלכם, שהוא סביבה מהימנה לחלוטין. ה-JWT נחתם, מוצפן ועובר ללקוח לאינטראקציה הבאה עם השרת, עד שהתוקף שלו פג או שהוא כבר לא בתוקף.
הקצה העורפי צריך לבצע אימות והרשאה מול Fleet Engine באמצעות מנגנונים רגילים של Application Default Credentials. חשוב להשתמש באסימוני JWT שנחתמו על ידי חשבון שירות מתאים. לרשימת התפקידים של חשבונות השירות, ראו תפקידי חשבון השירות של Fleet Engine בקטע יסודות של Fleet Engine.
לעומת זאת, הקצה העורפי צריך לבצע אימות ואישור מול Fleet Engine באמצעות מנגנונים רגילים של Application Default Credentials.
איך מתבצע האימות?
ההרשאה באמצעות נתוני Fleet Engine כוללת הטמעה גם בצד השרת וגם בצד הלקוח.
הרשאה בצד השרת
לפני שמגדירים אימות והרשאה באפליקציית המעקב ב-Fleet, צריך לוודא ששרת הקצה העורפי שלכם יכול להנפיק אסימוני JSON Web Token לאפליקציה למעקב ב-Fleet לצורך גישה ל-Fleet Engine. אפליקציית המעקב של Fleet שולחת את אסימוני ה-JWT האלה עם הבקשות שלה, כדי ש-Fleet Engine יזהה את הבקשות כמאומתות ומורשות לגשת לנתונים שבבקשה. להוראות לגבי הטמעת JWT בצד השרת, ראו בעיה באסימוני אינטרנט בפורמט JSON בקטע Fleet Engine Essentials.
כדי ליצור אסימונים מהשרת שלכם כשמטמיעים מעקב של כלל המכשירים בארגון, כדאי לעיין במאמרים הבאים:- הנחיות כלליות להנפקת אסימוני אינטרנט מסוג JSON, כולל קטעים של נסיעות על פי דרישה ושל משימות מתוזמנות
- נסיעות על פי דרישה: אסימון לדוגמה לפעולה בשרת לקצה העורפי
- משימות מתוזמנות: אסימון לדוגמה למעקב אחרי כל המשימות והרכבים בצי
הרשאה בצד הלקוח
כשמשתמשים בספריית המעקב של Fleet ב-JavaScript, היא מבקשת אסימון מהשרת באמצעות שליפת אסימוני הרשאה. היא עושה זאת כשמתקיים אחד מהתנאים הבאים:
אין טוקן תקף, למשל כש-SDK לא קרא למאחזר בטעינה של דף חדש, או כשהמאחזר לא החזיר טוקן.
פג תוקפו של הטוקן.
תוקף האסימון יפוג תוך דקה.
אחרת, ספריית המעקב של JavaScript ל-Fleet משתמשת באסימון החוקי שהונפק בעבר ולא מפעילה את האחזור.
יצירת Fetcher של אסימון הרשאה
יוצרים את האוסף של אסימוני ההרשאה לפי ההנחיות הבאות:
אוסף הנתונים חייב להחזיר מבנה נתונים עם שני שדות, עטוף ב-
Promise
באופן הבא:מחרוזת
token
.מספר
expiresInSeconds
. התוקף של האסימון יפוג תוך פרק הזמן הזה אחרי האחזור. מאחזר אסימון האימות חייב להעביר את מועד התפוגה בשניות, מרגע השליפה לספרייה, כפי שמוצג בדוגמה.
המאחזר צריך לקרוא לכתובת URL בשרת שלכם כדי לאחזר אסימון. כתובת ה-URL הזו –
SERVER_TOKEN_URL
– תלויה ביישום הקצה העורפי. כתובת ה-URL לדוגמה הבאה היא של הקצה העורפי של האפליקציה לדוגמה ב-GitHub:https://SERVER_URL/token/fleet_reader
דוגמה – יצירה של כלי לשליפת אסימון הרשאה
בדוגמאות הבאות מוסבר איך ליצור אובייקט לאחזור אסימון הרשאה:
JavaScript
async function authTokenFetcher(options) {
// options is a record containing two keys called
// serviceType and context. The developer should
// generate the correct SERVER_TOKEN_URL and request
// based on the values of these fields.
const response = await fetch(SERVER_TOKEN_URL);
if (!response.ok) {
throw new Error(response.statusText);
}
const data = await response.json();
return {
token: data.Token,
expiresInSeconds: data.ExpiresInSeconds
};
}
TypeScript
function authTokenFetcher(options: {
serviceType: google.maps.journeySharing.FleetEngineServiceType,
context: google.maps.journeySharing.AuthTokenContext,
}): Promise<google.maps.journeySharing.AuthToken> {
// The developer should generate the correct
// SERVER_TOKEN_URL based on options.
const response = await fetch(SERVER_TOKEN_URL);
if (!response.ok) {
throw new Error(response.statusText);
}
const data = await response.json();
return {
token: data.token,
expiresInSeconds: data.ExpiresInSeconds,
};
}