يوضّح هذا المستند كيفية إصدار رموز مميّزة بتنسيق 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. تسهّل المكتبة إنشاء رموز JWT الخاصة بخدمة Fleet Engine وتوقيعها بشكل آمن. تقدّم هذه الخدمة ما يلي:
- بيانات اعتمادية المشاريع
- قائمة كاملة بجميع أدوار حسابات الخدمة للرحلات عند الطلب أو المهام المجدوَلة
- آليات توقيع الرموز المميزة غير استخدام ملفات بيانات الاعتماد، مثل انتحال هوية حساب خدمة
- إرفاق الرموز المميزة الموقَّعة بالطلبات الصادرة من إما برنامج gRPC أو مكتبة عميل Google API Codegen (GAPIC)
- تعليمات حول دمج الموقّعين مع مكتبات برامج Fleet Engine
إذا كنت تصدر رموز JWT من الرمز البرمجي
إذا لم يكن بإمكانك استخدام مكتبة التفويض للغة Java، عليك تنفيذ رموز JWT في قاعدة الرموز البرمجية الخاصة بك. يقدّم هذا القسم بعض الإرشادات لإنشاء الرموز المميّزة الخاصة بك. اطّلِع على رموز JSON المميزة للويب ضمن قسم الأمان في Fleet Engine للحصول على قائمة بحقول وطلبات رموز JWT. راجِع أدوار حساب الخدمة لمعرفة أدوار حساب الخدمة التي تستخدمها Fleet Engine. راجِع القسم التالي للاطّلاع على قائمة بأمثلة على رموز JWT للرحلات عند الطلب أو المهام المجدوَلة.
الإرشادات العامة
- استخدام حسابات الخدمة والأدوار المناسبة يضمن حساب الخدمة والدور المرتبط به حصول المستخدم الذي يطلب الرمز المميّز على إذن بعرض المعلومات التي يتيح له الرمز المميّز الوصول إليها. على وجه التحديد:
- في حال توقيع رمز JWT ليتم تمريره إلى جهاز جوّال، استخدِم حساب الخدمة لدور حزمة تطوير البرامج (SDK) الخاصة بالسائق أو المستهلك. وبخلاف ذلك، يمكن للجهاز الجوّال تعديل البيانات والوصول إليها بشكل غير مصرح به.
- في حال توقيع رمز JWT لاستخدامه في طلبات مميّزة، استخدِم حساب الخدمة الذي يتضمّن دور مشرف Fleet Engine الصحيح عند استخدام رموز ADC أو JWT. وفي حال عدم توفّرها، يتعذّر إتمام العملية.
- مشاركة الرموز المميزة التي تم إنشاؤها فقط لا تشارك أبدًا بيانات الاعتماد المستخدَمة لإنشاء الرموز المميزة.
- بالنسبة إلى طلبات gRPC، تعتمد آلية إرفاق الرمز المميّز على اللغة والإطار المستخدَمَين لإجراء الطلب. آلية تحديد رمز مميّز لطلب HTTP هي تضمين عنوان
Authorizationمع رمز مميّز لحامل الرمز تكون قيمته هي الرمز المميّز. - إرجاع وقت انتهاء الصلاحية يجب أن يعرض الخادم وقت انتهاء صلاحية الرمز المميز، ويكون ذلك عادةً بالثواني.
- إذا كنت بحاجة إلى إنشاء ملف JSON وتوقيعه مباشرةً كحامل رمز مميز، بدلاً من استخدام رموز الدخول المميزة للإصدار 2.0 من OAuth، يمكنك الاطّلاع على التعليمات الخاصة بتفويض حساب الخدمة بدون OAuth في مستندات Identity Developer.
للرحلات عند الطلب
- عند إنشاء حمولة 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 ReaderCloud 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 في عمليات خادم الخلفية، يُرجى الاطّلاع على نظرة عامة على الأمان.