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

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

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

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

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

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

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

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

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

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

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

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

للمهام المُجدوَلة

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

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

يقدّم هذا القسم أمثلة على 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_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_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": "*"
       }
    }

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

    {
      "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"
       }
    }

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

المثال التالي هو رمز مميز يتتبع جميع المهام والمركبات في الأسطول. راجِع المقالة إعداد مكتبة تتبُّع مجموعة 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": "*",
       }
    }

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

  • تحقَّق من الإعداد حتى تتمكّن من إنشاء مركبة تجريبية والتأكّد من عمل الرموز المميزة على النحو المنشود