JSON Web Tokens

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

Fleet Engine به استفاده از JSON Web Tokens (JWT) نیاز دارد که توسط یک حساب سرویس مناسب برای فراخوانی‌های روش API از محیط‌های کم‌اعتماد امضا شده است. محیط های کم اعتماد شامل گوشی های هوشمند و مرورگرها هستند. یک JWT در سرور شما ایجاد می شود که یک محیط کاملاً قابل اعتماد است. JWT امضا می شود، رمزگذاری می شود و برای تعاملات بعدی سرور به مشتری ارسال می شود تا زمانی که منقضی شود یا دیگر معتبر نباشد.

باطن شما باید با استفاده از مکانیزم های استاندارد Application Default Credentials احراز هویت و مجوز در برابر Fleet Engine را صادر کند. مطمئن شوید که از JWT هایی استفاده می کنید که توسط یک حساب سرویس مناسب امضا شده اند. برای فهرستی از نقش‌های حساب سرویس، نقش‌های حساب خدمات Fleet Engine را در Fleet Engine Basics ببینید.

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

عناصر JWT

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

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

فیلدهای هدر JWT

میدان

توضیحات

alg

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

تایپ کنید

نوع توکن "JWT".

بچه

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

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

میدان

توضیحات

iss

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

فرعی

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

aud

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

iat

مهر زمانی که JWT ایجاد شد، مشخص شده بر حسب ثانیه های سپری شده از ساعت 00:00:00 UTC, January 1, 1970 . 10 دقیقه برای کج شدن زمان بگذارید. اگر مهر زمانی در گذشته یا در آینده خیلی دور باشد، سرور ممکن است خطا را گزارش کند.

انقضا

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

مجوز

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

در صورت تعیین وظایف، محدوده مجوز باید یک آرایه به یکی از اشکال زیر باشد:

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

یا

"taskids": ["*"]

Fleet Engine JWT ادعا می کند

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

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

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

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

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

وظایف برنامه ریزی شده

  • deliveryvehicleid

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

  • taskid

    هنگام فراخوانی APIهای هر وظیفه استفاده کنید.

  • taskids

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

  • trackingid

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

بعدش چی