رمز 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 Cloud.
الحقل |
الوصف |
|---|---|
alg |
الخوارزمية التي سيتم استخدامها `RS256`. |
typ |
تمثّل هذه السمة نوع الرمز المميّز. `JWT`. |
طفلة |
معرّف المفتاح الخاص لحساب الخدمة يمكنك العثور على هذه القيمة في حقل |
الحقل |
الوصف |
|---|---|
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 المميزة للويب من الخادم.