إصدار رموز 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 لعمليات خادم الخلفية، راجِع نظرة عامة على الأمان.