رموز JSON المميّزة للويب

رمز JSON المميّز للويب (JWT) هو معيار ويب مفتوح يُستخدم لمصادقة عمليات تبادل المعلومات بين عميل وخادم وتفويضها. عندما يسجِّل مستخدم التطبيق الدخول لأول مرة باستخدام بيانات اعتماد الدور المناسبة، ينشئ الخادم رمز JWT مرمزًا وموقّعًا رقميًا ويعرضه لاستخدامه في الطلبات اللاحقة. تؤدي هذه العملية إلى مصادقة المستخدم وتفويضه للوصول إلى المسارات والخدمات والموارد استنادًا إلى دور حسابه.

يتطلب Fleet Engine استخدام رموز JSON المميزة للويب (JWT) لطلبات طريقة واجهة برمجة التطبيقات من البيئات غير الموثوق بها: الهواتف الذكية والمتصفحات.

يتم إنشاء رمز JWT على خادمك وتوقيعه وتشفيره وتمريره إلى العميل للتفاعلات اللاحقة مع الخادم إلى أن تنتهي صلاحيته أو يصبح غير صالح.

التفاصيل الأساسية

على عكس مفاتيح واجهة برمجة التطبيقات، تكون رموز JWT قصيرة الأجل وتقتصر العمليات على العمليات التي يُسمح للدور بتنفيذها فقط. لمزيد من المعلومات عن رموز JWT، اطّلِع على مقالة رموز JSON المميزة للويب على ويكيبيديا. لمعرفة التفاصيل عن أدوار الوصول، اطّلِع على أدوار حسابات الخدمة في هذا الدليل.

عناصر رمز JWT

تحتوي رموز JWT على عنوان وقسم المطالبات. يحتوي قسم العنوان على معلومات مثل المفتاح الخاص الذي تم الحصول عليه من حسابات الخدمة وخوارزمية التشفير. يحتوي قسم المطالبات على معلومات مثل وقت إنشاء رمز JWT ومدة البقاء (TTL) والخدمات التي يطالب رمز JWT بالوصول إليها ومعلومات التفويض الأخرى لتحديد نطاق الوصول، مثل رقم تعريف مركبة التوصيل.

يوفّر الجدول التالي تفاصيل وصفية عن حقول رمز JWT بشكل عام، بالإضافة إلى معلومات محدّدة عن الأماكن التي يمكنك العثور فيها على قيم هذه الحقول في مشروع Fleet Engine على السحابة الإلكترونية.

حقول عنوان JWT

الحقل

الوصف

alg

الخوارزمية التي سيتم استخدامها. `RS256`

typ

نوع الرمز المميّز. `JWT`

kid

رقم تعريف المفتاح الخاص لحساب الخدمة. يمكنك العثور على هذه القيمة في الـ private_key_id في ملف JSON لحساب الخدمة. احرص على استخدام مفتاح من حساب خدمة لديه مستوى الأذونات الصحيح.

حقول مطالبات JWT

الحقل

الوصف

iss

عنوان البريد الإلكتروني لحساب الخدمة، والذي يمكن العثور عليه في الحقل client_email في ملف JSON لحساب الخدمة.

sub

عنوان البريد الإلكتروني لحساب الخدمة، والذي يمكن العثور عليه في الحقل client_email في ملف JSON لحساب الخدمة.

aud

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، يجب أن يكون نطاق التفويض مصفوفة بإحدى الأشكال التالية:

"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.

الخطوات التالية