إصدار رموز JSON المميّزة للويب

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

  • استخدام مكتبة التفويض: تنصحك Google باستخدام هذه الطريقة. عند كتابة قاعدة التعليمات البرمجية بلغة Java. تتعامل هذه المكتبة مع إصدار JWT جميع سيناريوهات حالات الاستخدام التي قد تحتاجها مع الخدمة يبسط عملية التنفيذ.
  • إنشاء ملفات JWT الخاصة بك: في حال لم تتمكّن من استخدام مكتبة JWT، عليك إجراء ما يلي: وتنشئها في قاعدة التعليمات البرمجية الخاصة بك. يوفّر هذا القسم مختلف أمثلة على ملفات JWT لكل سيناريو.

طريقة عمل JWT

بالنسبة إلى البيئات غير الموثوق بها، مثل الهواتف المحمولة ومتصفحات الويب، يمكن استخدام الواجهة الخلفية مشكلات الخادم JWT التي تعمل على النحو التالي:

  • يطلب رمز العميل الذي يعمل في بيئة ذات مستوى ثقة منخفض من رمز الخادم الذي يعمل في بيئة موثوق بها بالكامل طلب JWT المناسب لإرساله إلى Fleet Engine.

  • تكون ملفات JWT مرتبطة بحسابات الخدمة، لذا تكون الطلبات المُرسَلة إلى Fleet Engine مرتبطة بشكل ضمني بحساب الخدمة الذي وقّع ملف JWT.

  • تفرض مطالبات JWT قيودًا إضافية على الموارد التي يمكن للعميل التعامل معها، مثل المركبات أو الرحلات أو المهام المحدّدة.

استخدام مكتبة التفويض لـ Java

لاستخدام مكتبة التفويض في Fleet Engine لبرنامج Java، يُرجى الانتقال إلى مستودع GitHub . المكتبة تبسّط إنشاء Fleet Engine يوقّع عليها JWT بشكل آمن. وتوفّر ما يلي:

  • تصريحات تبعية المشروع
  • قائمة كاملة بجميع أدوار حساب الخدمة للرحلات عند الطلب أو مهام مُجدوَلة
  • آليات توقيع الرموز المميّزة بخلاف استخدام ملفات بيانات الاعتماد، مثل انتحال هوية حساب خدمة
  • إرفاق الرموز الموقَّعة بالطلبات الصادرة التي يتم إجراؤها من رمز نائب gRPC أو مكتبة عميل Google API Codegen (GAPIC)
  • تعليمات حول دمج الموقِّعين مع مكتبات عملاء Fleet Engine

في حال إصدار ملفات JWT من الرمز البرمجي

إذا لم تتمكّن من استخدام مكتبة التفويض في Java، عليك تنفيذ ملفات JWT في قاعدة بياناتك الخاصة. يقدم هذا القسم بعض الإرشادات لإنشاء الرموز المميزة. اطّلِع على رموز JSON المميّزة للويب ضمن قسم الأمان في Fleet Engine للحصول على قائمة بحقول JWT وطلباتها. اطّلِع على دوارِ حساب الخدمة لمعرفة أدوار حساب الخدمة المستخدَمة من قِبل Fleet Engine. اطّلِع على القسم التالي للحصول على قائمة بأمثلة على ملفات JWT للرحلات عند الطلب أو المهام المُجدوَلة.

الإرشادات العامة

  • استخدام حسابات الخدمة والأدوار المناسبة يجب أن يتضمن حساب الخدمة المرتبط بالرمز المرتبط أن المستخدم الذي يطلب الرمز المميز عرض المعلومات التي يمنحها الرمز المميز حق الوصول إليها. على وجه التحديد:
    • في حال توقيع إرسال JWT إلى جهاز جوّال، استخدِم الخدمة حساب لدور Driver أو حزمة SDK للمستهلك. وبخلاف ذلك، يمكن للجهاز المتحرّك تعديل البيانات التي لا يُفترَض أن يصل إليها والوصول إليها.
    • في حال توقيع ملف JWT لاستخدامه في طلبات البيانات المميّزة، استخدِم حساب الخدمة الذي يتضمّن دور "مشرف Fleet Engine" الصحيح عند استخدام تنسيق ADC أو ملفات JWT. وبخلاف ذلك، ستفشل العملية.
  • شارِك الرموز المميّزة التي تم إنشاؤها فقط. لا تشارك أبدًا بيانات الاعتماد المستخدمة لإنشاء الرموز المميزة.
  • بالنسبة إلى استدعاءات gRPC، تعتمد آلية إرفاق الرمز المميّز على واللغة وإطار العمل المستخدَمين لإجراء المكالمة. تعتمد آلية تحديد أن يكون هناك رمز مميّز لاستدعاء HTTP هو تضمين عنوان Authorization مع حامل الذي تكون قيمته هي الرمز المميز.
  • عرض وقت انتهاء صلاحية يجب أن يعرض الخادم وقت انتهاء صلاحية رمز التفويض، ويكون عادةً بالثواني.
  • إذا كنت بحاجة إلى إنشاء ملف JSON وتوقيعه مباشرةً كحامل رمز مميّز، بدلاً من استخدام رموز الدخول عبر OAuth 2.0، اقرأ إرشادات الخدمة تفويض الحساب بدون بروتوكول OAuth في Identity مستندات المطوِّرين:

للرحلات المسجّلة

  • عند إنشاء حمولة JWT، أضِف مطالبة أخرى في التفويض قسم يحتوي على المفتاح vehicleid أو tripid الذي تم ضبطه على قيمة المركبة رقم التعريف أو معرّف الرحلة الذي يتم إجراء المكالمة له

بالنسبة إلى المهام المُجدوَلة

  • عندما يستدعي الخادم واجهات برمجة تطبيقات أخرى، يجب أن تحتوي الرموز المميزة أيضًا على المناسب. لإجراء ذلك، يمكنك اتّباع الخطوات التالية:
    • اضبط قيمة كل مفتاح على *.
    • امنح المستخدم إذن الوصول إلى كل من taskids وdeliveryvehicleids. للقيام بذلك، تضيف مطالبة أخرى في قسم التفويض المفتاحان taskid وdeliveryvehicleid.
    • عند استخدام علامة النجمة (*) في مطالبة taskids، يجب أن تكون السمة فقط في الصفيفة.

أمثلة على JWT للرحلات عند الطلب

يقدّم هذا القسم أمثلة على JWT للسيناريوهات الشائعة إذا كنت تستخدم الخدمة عند الطلب. رحلات.

مثال على رمز مميز لعملية تطبيق السائق

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_driver_service_account"
}
.
{
  "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
  "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "vehicleid": "driver_12345"
   }
}

مثال على رمز مميّز لعملية تطبيق مخصّص للمستهلكين

{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "private_key_id_of_consumer_service_account"
}
.
{
  "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
  "aud": "https://fleetengine.googleapis.com/",
  "iat": 1511900000,
  "exp": 1511903600,
  "authorization": {
     "tripid": "trip_54321"
   }
}

أمثلة على تنسيق JWT للمهام المجدوَلة

يقدّم هذا القسم مثالاً على JWT للسيناريوهات المعتادة في حال استخدام المهام المقسّمة زمنيًا.

مثال على رمز مميّز لتطبيق السائق

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_driver_service_account"
    }
    .
    {
      "iss": "driver@yourgcpproject.iam.gserviceaccount.com",
      "sub": "driver@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "driver_12345"
       }
    }

مثال على رمز مميّز لتطبيق مستهلِك

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_delivery_consumer_service_account"
    }
    .
    {
      "iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "trackingid": "shipment_12345"
       }
    }

أمثلة على JWT لعمليات الأسطول

يقدّم هذا القسم مثالاً على JWT لسيناريو نموذجي في عمليات الأسطول.

مثال على رمز مميّز لتتبُّع جميع المهام والمركبات في أسطول

المثال التالي هو رمز مميّز يتتبّع جميع المهام والمركبات في الأسطول من تطبيق مستند إلى الويب يستخدمه مشغل. الأذونات المطلوبة لهذه العمليات أكبر من تطبيقات العميل. عرض إعداد مكتبة تتبُّع مجموعة JavaScript من جهة العميل عملية تنفيذ قد تستخدم هذا الرمز:

  • توقيع الرمز المميّز باستخدام Fleet Engine Delivery Fleet Reader Cloud IAM الدور.

   {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_consumer_service_account"
    }
    .
    {
      "iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "scope": "https://www.googleapis.com/auth/xapi",
      "authorization": {
         "taskid": "*",
         "deliveryvehicleid": "*",
       }
    }

طريقة مصادقة بديلة لعمليات الخادم في الخلفية

تنصح Google باستخدام بروتوكول ADC لمصادقة عمليات الخادم في الخلفية. في حال حذف لا يمكنك استخدام ADC وتحتاج إلى استخدام JWT، راجع هذه الأمثلة.

مثال على رمز مميز لعملية على خادم خلفية عند الطلب

  {
    "alg": "RS256",
    "typ": "JWT",
    "kid": "private_key_id_of_provider_service_account"
  }

  {
    "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
    "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
    "aud": "https://fleetengine.googleapis.com/",
    "iat": 1511900000,
    "exp": 1511903600,
    "authorization": {
       "vehicleid": "*",
       "tripid": "*"
     }
  }
  

مثال على رمز مميّز لعملية مُجدوَلة لخادم الخلفية

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskid": "*"
       }
    }
   

مثال على رمز مميّز لعملية إنشاء مهام مجمّعة في خادم الخلفية المجدول

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "taskids": ["*"]
       }
    }
  

مثال على رمز مميّز لخادم خلفية مجدوَل لكل عملية مركبة تسليم

    {
      "alg": "RS256",
      "typ": "JWT",
      "kid": "private_key_id_of_provider_service_account"
    }
    .
    {
      "iss": "provider@yourgcpproject.iam.gserviceaccount.com",
      "sub": "provider@yourgcpproject.iam.gserviceaccount.com",
      "aud": "https://fleetengine.googleapis.com/",
      "iat": 1511900000,
      "exp": 1511903600,
      "authorization": {
         "deliveryvehicleid": "*"
       }
    }
  

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

  • تحقَّق من الإعداد حتى تتمكّن من إنشاء مركبة تجريبية والتأكّد من عملتك المميزة تعمل على النحو المنشود
  • للحصول على معلومات عن استخدام تنسيق ADC بدلاً من تنسيقات JWT لعمليات الخادم في الخلفية، يُرجى الاطّلاع على نظرة عامة على الأمان.