ما هو الرمز المميّز؟
يتطلب Fleet Engine استخدام رموز JSON المميزة للويب (JWT) التي تم توقيعها بواسطة حساب خدمة مناسب لطلبات بيانات طريقة واجهة برمجة التطبيقات من مستوى الثقة المنخفضة البيئات. وتشمل البيئات منخفضة الثقة الهواتف الذكية والمتصفحات. JWT على الخادم الخاص بك، والتي تُعد بيئة موثوقة بالكامل. رمز JWT توقيعها وتشفيرها وتمريرها إلى العميل في الخادم اللاحق إلى أن تنتهي صلاحيتها أو تصبح غير صالحة.
يجب أن تتم المصادقة والتفويض ضد Fleet Engine باستخدام الواجهة الخلفية. إلى آليات بيانات الاعتماد التلقائية للتطبيق القياسية. الماركة تأكَّد من استخدام ملفات JWT التي تم توقيعها من خلال حساب خدمة مناسب. بالنسبة إلى قائمة بأدوار حساب الخدمة، يُرجى الاطّلاع على أدوار حساب خدمةFleet Engine. في أساسيات Fleet Engine
لمزيد من المعلومات حول رموز JSON المميّزة للويب، يمكنك الاطّلاع على رموز JSON المميّزة للويب في أساسيات Fleet Engine
كيف يحصل العملاء على الرموز المميزة؟
بعد أن يسجّل أحد السائقين أو المستهلكين الدخول إلى تطبيقك باستخدام بيانات اعتماد التفويض، فإن أي تحديثات يتم إصدارها من هذا الجهاز يجب أن تستخدم رموز التفويض المناسبة، والتي ترسل إلى Fleet Engine أذونات التطبيق.
وبصفتك مطور البرامج، يجب أن يوفر تنفيذ العميل القدرة على تنفيذ ما يلي:
- أحضر رمز JSON المميّز للويب (JSON) من الخادم.
- يمكنك إعادة استخدام الرمز المميّز إلى أن تنتهي صلاحيته لتقليل عدد عمليات إعادة تحميل الرمز المميّز.
- أعِد تحميل الرمز المميّز عند انتهاء صلاحيته.
تنشئ الفئة AuthTokenFactory
رموزًا مميّزة للتفويض عند تعديل الموقع الجغرافي.
الوقت. يجب أن تجمع حزمة SDK الرموز المميزة مع التحديث
المعلومات لإرسالها إلى Fleet Engine. تأكد من أن الخادم
إلى إصدار رموز مميزة قبل إعداد حزمة SDK.
لمعرفة تفاصيل الرموز المميّزة التي تتوقعها خدمة Fleet Engine، يُرجى الاطّلاع على مقالة مشكلة JSON. الرموز المميّزة للويب لـ Fleet Engine
مثال على أداة استرجاع الرمز المميّز للتفويض
في ما يلي شرح أساسي لـ AuthTokenFactory
:
class JsonAuthTokenFactory implements AuthTokenFactory {
private String vehicleServiceToken; // initially null
private long expiryTimeMs = 0;
private String vehicleId;
// This method is called on a thread whose only responsibility is to send
// location updates. Blocking is OK, but just know that no location updates
// can occur until this method returns.
@Override
public String getToken(AuthTokenContext authTokenContext) {
String vehicleId = requireNonNull(context.getVehicleId());
if (System.currentTimeMillis() > expiryTimeMs || !vehicleId.equals(this.vehicleId)) {
// The token has expired, go get a new one.
fetchNewToken(vehicleId);
}
return vehicleServiceToken;
}
private void fetchNewToken(String vehicleId) {
String url = "https://yourauthserver.example/token/" + vehicleId;
try (Reader r = new InputStreamReader(new URL(url).openStream())) {
com.google.gson.JsonObject obj
= com.google.gson.JsonParser.parseReader(r).getAsJsonObject();
vehicleServiceToken = obj.get("VehicleServiceToken").getAsString();
expiryTimeMs = obj.get("TokenExpiryMs").getAsLong();
// The expiry time could be an hour from now, but just to try and avoid
// passing expired tokens, we subtract 10 minutes from that time.
expiryTimeMs -= 10 * 60 * 1000;
this.vehicleId = vehicleId;
} catch (IOException e) {
// It's OK to throw exceptions here. The StatusListener you passed to
// create the DriverContext class will be notified and passed along the failed
// update warning.
throw new RuntimeException("Could not get auth token", e);
}
}
}
يستخدم هذا التنفيذ تحديدًا عميل Java HTTP المضمن لجلب للرمز المميز بتنسيق JSON من خادم التفويض. يحفظ العميل الرمز المميّز لإعادة استخدامه وجلب الرمز المميز إذا كان في غضون 10 دقائق من وقت انتهاء الصلاحية.
قد تختلف آلية التنفيذ لديك، مثل استخدام سلسلة محادثات في الخلفية. لتحديث الرموز المميزة.
للحصول على مكتبات العملاء المتاحة لـ Fleet Engine، راجع مكتبات العملاء لخدمات المهام المُجدوَلة