کدهای وب JSON

‫JSON Web Token (JWT)‎ استاندارد وب بازی است که برای اصالت‌سنجی و صدور مجوز تبادل اطلاعات بین کارخواه و سرور استفاده می‌شود. وقتی کاربر برنامه برای اولین‌بار با اعتبارنامه نقش مناسب به سیستم وارد می‌شود، سرور یک JWT کدگذاری‌شده و امضاشده دیجیتالی برای استفاده در درخواست‌های بعدی ایجاد می‌کند و برمی‌گرداند. این فرایند هم کاربر را اصالت‌سنجی می‌کند و هم به او اجازه می‌دهد براساس نقش حسابش به مسیرها، سرویس‌ها، و منابع دسترسی داشته باشد.

Fleet Engine برای فراخوانی‌های روش میانای برنامه‌سازی کاربردی از محیط‌های با اعتماد پایین (تلفن‌های هوشمند و مرورگرها) به استفاده از JSON Web Tokens (JWT) نیاز دارد.

JWT از سرور شما منشأ می‌گیرد، امضا و رمزگذاری می‌شود، و برای تعاملات بعدی سرور به کارخواه منتقل می‌شود تا زمانی که منقضی شود یا دیگر معتبر نباشد.

جزئیات کلید

برخلاف کلیدهای میانای برنامه‌سازی کاربردی، JWTها عمر کوتاهی دارند و عملیات را فقط به مواردی محدود می‌کنند که نقش مجاز به انجام آن‌ها است. برای اطلاعات بیشتر درباره JWT، به JSON Web Tokens در ویکی‌پدیا مراجعه کنید. برای جزئیات نقش‌های دسترسی، نقش‌های حساب سرویس را در این راهنما ببینید.

عناصر JWT

‫JWTها حاوی یک سرصفحه و یک بخش ادعا هستند. بخش سرصفحه حاوی اطلاعاتی مانند کلید خصوصی به‌دست‌آمده از حساب‌های سرویس، و الگوریتم رمزگذاری است. بخش ادعا حاوی اطلاعاتی مانند زمان ایجاد JWT، زمان زندگی، سرویس‌هایی است که JWT ادعا می‌کند به آن‌ها دسترسی دارد، و سایر اطلاعات مجوز برای محدود کردن دسترسی؛ برای مثال، شناسه خودرو تحویل.

جدول زیر جزئیات توصیفی درباره فیلدهای JWT به‌طور کلی، و همچنین اطلاعات خاصی درباره جایی که می‌توانید مقادیر این فیلدها را در پروژه ابری Fleet Engine خود پیدا کنید، ارائه می‌دهد.

فیلدهای سرایند JWT

فیلد

شرح

الگوریتم

الگوریتم مورد استفاده. `RS256`.

typ

نوع کد. `JWT`.

کودک

شناسه کلید خصوصی حساب سرویس شما. می‌توانید این مقدار را در فیلد private_key_id فایل JSON حساب سرویس خود پیدا کنید. حتماً از کلید حساب سرویسی با سطح اجازه‌های صحیح استفاده کنید.

فیلدهای ادعای JWT

فیلد

شرح

iss

نشانی ایمیل حساب سرویس شما که در فیلد client_email فایل JSON حساب سرویس شما قرار دارد.

جایگزین

نشانی ایمیل حساب سرویس شما که در فیلد client_email فایل JSON حساب سرویس شما قرار دارد.

دلار استرالیا

SERVICE_NAME حساب سرویس شما، در این مورد https://fleetengine.googleapis.com/

iat

مُهر زمان ایجاد JWT، که برحسب ثانیه سپری‌شده از 00:00:00 UTC, January 1, 1970 مشخص شده است. ۱۰ دقیقه برای انحراف درنظر بگیرید. اگر مُهر زمان خیلی قدیمی یا خیلی جدید باشد، ممکن است سرور خطا گزارش کند.

تابع نمایی

مُهر زمان انقضای JWT، که برحسب ثانیه‌های سپری‌شده از 00:00:00 UTC, January 1, 1970 مشخص می‌شود. اگر مُهر زمان بیش‌از یک ساعت در آینده باشد، درخواست ناموفق خواهد بود.

تنفیذ

بسته به مورد استفاده، ممکن است حاوی deliveryvehicleid، trackingid، taskid، یا taskids باشد.

اگر taskids را مشخص می‌کنید، گستره مجوز باید آرایه‌ای در یکی از فرم‌های زیر باشد:

"taskids": ["task_id_one","task_id_two"]

یا

"taskids": ["*"]

ادعاهای Fleet Engine JWT

Fleet Engine از ادعاهای خصوصی استفاده می‌کند. استفاده از ادعاهای خصوصی تضمین می‌کند که فقط مشتریان مجاز می‌توانند به داده‌های خودشان دسترسی داشته باشند.

برای مثال، وقتی سرور شما «JSON وب توکن» برای دستگاه همراه راننده صادر می‌کند، باید حاوی ادعای vehicleid یا ادعای deliveryvehicleid با مقدار شناسه خودرو آن راننده باشد. سپس، بسته به نقش راننده، JWTها دسترسی را فقط برای شناسه خودرو خاص فعال می‌کنند و نه هیچ شناسه خودرو دلخواه دیگری.

Fleet Engine از ادعاهای خصوصی زیر استفاده می‌کند:

سفرهای درخواستی

  • vehicleid:
    • «کیت توسعه نرم‌افزار راننده» همیشه از این ادعا استفاده می‌کند، چه درحال کار روی سفر باشد یا وسیله نقلیه. باطن Fleet Engine اطمینان حاصل می‌کند که خودرو قبل‌از انجام اصلاحات با سفر درخواست‌شده مرتبط باشد.
    • ‫JWT می‌تواند هم عملیات خودرو و هم عملیات سفر را پوشش دهد، حتی اگر الزامی نباشد، که ممکن است پیاده‌سازی امضای JWT را ساده‌تر کند.
  • tripid:
    • «کیت توسعه نرم‌افزار مصرف‌کننده» همیشه از این ادعا استفاده می‌کند.
    • JWT می‌تواند هم عملیات خودرو و هم عملیات سفر را پوشش دهد، حتی اگر لازم نباشد، که ممکن است پیاده‌سازی امضای توکن را ساده‌تر کند.

تکالیف زمان‌بندی‌شده

  • deliveryvehicleid

    هنگام فراخوانی میاناهای برنامه‌سازی کاربردی به‌ازای هر خودرو تحویل، از این استفاده کنید.

  • taskid

    هنگام فراخوانی میاناهای برنامه‌سازی کاربردی برای هر تکلیف استفاده کنید.

  • taskids

    هنگام تماس با BatchCreateTasksAPI استفاده شود. این ادعا باید به‌صورت آرایه باشد، و آرایه باید شامل همه شناسه‌های تکلیف لازم برای تکمیل درخواست باشد. ادعاهای delivervehicleid، trackingid، یا taskid را اضافه نکنید.

  • trackingid

    هنگام تماس با GetTaskTrackingInfoAPI از آن استفاده کنید. ادعا باید با شناسه پیگیری در درخواست مطابقت داشته باشد. ادعاهای delivervehicleid، taskid، یا taskids را اضافه نکنید.

قدم بعدی چیست