رمز JSON المميّز للويب (JWT) هو معيار ويب مفتوح يُستخدم لمصادقة عمليات تبادل المعلومات بين عميل وخادم وتفويضها. عندما يسجِّل مستخدم التطبيق الدخول لأول مرة باستخدام بيانات اعتماد الدور المناسبة، ينشئ الخادم رمز JWT مرمزًا وموقّعًا رقميًا ويعرضه لاستخدامه في الطلبات اللاحقة. تؤدي هذه العملية إلى مصادقة المستخدم وتفويضه للوصول إلى المسارات والخدمات والموارد استنادًا إلى دور حسابه.
يتطلب Fleet Engine استخدام رموز JSON المميزة للويب (JWT) لطلبات طريقة واجهة برمجة التطبيقات من البيئات غير الموثوق بها: الهواتف الذكية والمتصفحات.
يتم إنشاء رمز JWT على خادمك وتوقيعه وتشفيره وتمريره إلى العميل للتفاعلات اللاحقة مع الخادم إلى أن تنتهي صلاحيته أو يصبح غير صالح.
التفاصيل الأساسية
- استخدِم بيانات الاعتماد التلقائية للتطبيق للمصادقة و التفويض في Fleet Engine.
- استخدِم حساب خدمة مناسبًا لتوقيع رموز JWT. اطّلِع على أدوار حسابات الخدمة في Fleet Engine في مقالة أساسيات Fleet Engine.
على عكس مفاتيح واجهة برمجة التطبيقات، تكون رموز JWT قصيرة الأجل وتقتصر العمليات على العمليات التي يُسمح للدور بتنفيذها فقط. لمزيد من المعلومات عن رموز JWT، اطّلِع على مقالة رموز JSON المميزة للويب على ويكيبيديا. لمعرفة التفاصيل عن أدوار الوصول، اطّلِع على أدوار حسابات الخدمة في هذا الدليل.
عناصر رمز JWT
تحتوي رموز JWT على عنوان وقسم المطالبات. يحتوي قسم العنوان على معلومات مثل المفتاح الخاص الذي تم الحصول عليه من حسابات الخدمة وخوارزمية التشفير. يحتوي قسم المطالبات على معلومات مثل وقت إنشاء رمز JWT ومدة البقاء (TTL) والخدمات التي يطالب رمز JWT بالوصول إليها ومعلومات التفويض الأخرى لتحديد نطاق الوصول، مثل رقم تعريف مركبة التوصيل.
يوفّر الجدول التالي تفاصيل وصفية عن حقول رمز JWT بشكل عام، بالإضافة إلى معلومات محدّدة عن الأماكن التي يمكنك العثور فيها على قيم هذه الحقول في مشروع Fleet Engine على السحابة الإلكترونية.
الحقل |
الوصف |
|---|---|
alg |
الخوارزمية التي سيتم استخدامها. `RS256` |
typ |
نوع الرمز المميّز. `JWT` |
kid |
رقم تعريف المفتاح الخاص لحساب الخدمة. يمكنك العثور على هذه القيمة في الـ
|
الحقل |
الوصف |
|---|---|
iss |
عنوان البريد الإلكتروني لحساب الخدمة، والذي يمكن العثور عليه في الحقل
|
sub |
عنوان البريد الإلكتروني لحساب الخدمة، والذي يمكن العثور عليه في الحقل
|
aud |
|
iat |
الطابع الزمني لوقت إنشاء رمز JWT، ويتم تحديده بالثواني المنقضية منذ 00:00:00 |
exp |
الطابع الزمني لوقت انتهاء صلاحية رمز JWT، ويتم تحديده بالثواني المنقضية
منذ |
السماح |
استنادًا إلى حالة الاستخدام، قد يحتوي على عند تحديد 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يُستخدم عند طلب واجهات برمجة التطبيقات لكل مركبة توصيل.
-
taskidيُستخدم عند طلب واجهات برمجة التطبيقات لكل مهمة.
-
taskidsيُستخدم عند طلب
BatchCreateTasksAPI. يجب أن تكون هذه المطالبة في شكل مصفوفة، ويجب أن تحتوي المصفوفة على جميع أرقام تعريف المهام اللازمة لإكمال الطلب. لا تُدرِج المطالباتdelivervehicleidأوtrackingidأوtaskid. -
trackingidيُستخدم عند طلب الـ
GetTaskTrackingInfoAPI. يجب أن تتطابق المطالبة مع رقم تعريف التتبّع في الطلب. لا تُدرِج المطالباتdelivervehicleidأوtaskidأوtaskids.
الخطوات التالية
- اطّلِع على مقالة تصميم أمان Fleet Engine لفهم تدفق المصادقة الكامل.
- تعرَّف على كيفية إصدار رموز JSON المميزة للويب من خادمك.