JSON Web Token (JWT) یک استاندارد وب باز است که برای اصالتسنجی و صدور مجوز تبادل اطلاعات بین کلاینت و سرور استفاده میشود. وقتی کاربر برنامه برای اولینبار با اعتبارنامه نقش مناسب به سیستم وارد میشود، سرور یک JWT کدگذاریشده و امضاشده دیجیتالی برای استفاده در درخواستهای بعدی ایجاد میکند و برمیگرداند. این فرایند هم کاربر را اصالتسنجی میکند و هم به او اجازه میدهد براساس نقش حسابش به مسیرها، سرویسها، و منابع دسترسی داشته باشد.
Fleet Engine برای فراخوانیهای روش میانای برنامهسازی کاربردی از محیطهای با اعتماد پایین (تلفنهای هوشمند و مرورگرها) به استفاده از JSON Web Tokens (JWTs) نیاز دارد.
JWT در سرور شما ایجاد میشود، امضا و رمزگذاری میشود، و برای تعاملات بعدی سرور به کارخواه ارسال میشود تا زمانی که منقضی شود یا دیگر معتبر نباشد.
جزئیات کلید
- از اعتبارنامههای پیشفرض برنامه برای اصالتسنجی و صدور مجوز در Fleet Engine استفاده کنید.
- از حساب خدمات مناسبی برای امضای JWT استفاده کنید. نقشهای حساب سرویس Fleet Engine را در مبانی Fleet Engine ببینید.
برخلاف کلیدهای میانای برنامهسازی کاربردی، JWTها عمر کوتاهی دارند و عملیات را فقط به مواردی محدود میکنند که نقش مجاز به انجام آنها است. برای اطلاعات بیشتر درباره JWT، به JSON Web Tokens در ویکیپدیا مراجعه کنید. برای جزئیات درباره نقشهای دسترسی، نقشهای حساب سرویس را در این راهنما ببینید.
عناصر JWT
JWTها حاوی یک سرصفحه و یک بخش ادعا هستند. بخش سرصفحه حاوی اطلاعاتی مانند کلید خصوصی بهدستآمده از حسابهای سرویس، و الگوریتم رمزگذاری است. بخش ادعا حاوی اطلاعاتی مانند زمان ایجاد JWT، زمان زندگی، سرویسهایی که JWT ادعای دسترسی به آنها را دارد، و سایر اطلاعات مجوز برای محدود کردن دسترسی است؛ برای مثال، شناسه خودرو تحویل.
جدول زیر جزئیات توصیفی درباره فیلدهای JWT بهطور کلی، و همچنین اطلاعات خاصی درباره جایی که میتوانید مقادیر این فیلدها را در پروژه ابری Fleet Engine خود پیدا کنید، ارائه میدهد.
فیلد |
شرح |
|---|---|
الگوریتم |
الگوریتم مورد استفاده. `RS256`. |
typ |
نوع کد. `JWT`. |
کودک |
شناسه کلید خصوصی حساب سرویس شما. میتوانید این مقدار را در فیلد
|
فیلد |
شرح |
|---|---|
iss |
نشانی ایمیل حساب سرویس شما که در فیلد |
جایگزین |
نشانی ایمیل حساب سرویس شما که در فیلد |
دلار استرالیا |
|
iat |
مُهر زمان ایجاد JWT، که برحسب ثانیه سپریشده از 00:00:00 |
تابع نمایی |
مُهر زمان انقضای JWT، که برحسب ثانیههای سپریشده از |
تنفیذ |
بسته به مورد استفاده، ممکن است حاوی اگر taskids را مشخص میکنید، گستره مجوز باید آرایهای در یکی از شکلهای زیر باشد: "taskids": ["task_id_one","task_id_two"]
یا "taskids": ["*"] |
ادعاهای Fleet Engine JWT
Fleet Engine از ادعاهای خصوصی استفاده میکند. استفاده از ادعاهای خصوصی تضمین میکند که فقط کارخواههای مجاز میتوانند به دادههای خودشان دسترسی داشته باشند.
برای مثال، وقتی سرور شما «JSON وب توکن» برای دستگاه همراه راننده صادر میکند، باید حاوی ادعای vehicleid یا ادعای deliveryvehicleid با مقدار شناسه خودرو آن راننده باشد. سپس،
بسته به نقش راننده، JWTها دسترسی را فقط برای شناسه خودرو خاص فعال میکنند
و نه هیچ شناسه خودرو دلخواه دیگری.
Fleet Engine از ادعاهای خصوصی زیر استفاده میکند:
سفرهای درخواستی
-
vehicleid:- کیت توسعه نرمافزار راننده همیشه از این ادعا استفاده میکند، چه درحال کار روی سفر باشد یا وسیله نقلیه. Fleet Engine backend مطمئن میشود که خودرو قبلاز انجام اصلاح با سفر درخواستشده مرتبط است.
- JWT میتواند هم عملیات خودرو و هم عملیات سفر را پوشش دهد، حتی اگر لازم نباشد، که ممکن است پیادهسازی امضای JWT را ساده کند.
-
tripid:- «کیت توسعه نرمافزار مصرفکننده» همیشه از این ادعا استفاده میکند.
- JWT میتواند هم عملیات خودرو و هم عملیات سفر را پوشش دهد، حتی اگر لازم نباشد، که ممکن است پیادهسازی امضای توکن را سادهتر کند.
تکالیف زمانبندیشده
-
deliveryvehicleidهنگام فراخوانی میاناهای برنامهسازی کاربردی بهازای هر خودرو تحویل از این استفاده کنید.
-
taskidهنگام فراخوانی میاناهای برنامهسازی کاربردی برای هر تکلیف استفاده کنید.
-
taskidsهنگام تماس با
BatchCreateTasksAPIاستفاده کنید. این ادعا باید بهصورت آرایه باشد، و آرایه باید شامل همه شناسههای تکلیف لازم برای تکمیل درخواست باشد. ادعاهایdelivervehicleid،trackingid، یاtaskidرا اضافه نکنید. -
trackingidهنگام تماس با
GetTaskTrackingInfoAPIاز آن استفاده کنید. ادعا باید با شناسه پیگیری در درخواست مطابقت داشته باشد. ادعاهایdelivervehicleid،taskid، یاtaskidsرا اضافه نکنید.
قدم بعدی چیست
- برای درک کامل جریان اصالتسنجی، درباره طراحی امنیتی Fleet Engine بخوانید.
- با نحوه صدور «ژتونهای وب JSON» از سرورتان آشنا شوید.