JSON Web Token (JWT) استاندارد وب بازی است که برای اصالتسنجی و صدور مجوز تبادل اطلاعات بین کارخواه و سرور استفاده میشود. وقتی کاربر برنامه برای اولینبار با اعتبارنامه نقش مناسب به سیستم وارد میشود، سرور یک JWT کدگذاریشده و امضاشده دیجیتالی برای استفاده در درخواستهای بعدی ایجاد میکند و برمیگرداند. این فرایند هم کاربر را اصالتسنجی میکند و هم به او اجازه میدهد براساس نقش حسابش به مسیرها، سرویسها، و منابع دسترسی داشته باشد.
Fleet Engine برای فراخوانیهای روش میانای برنامهسازی کاربردی از محیطهای با اعتماد پایین (تلفنهای هوشمند و مرورگرها) به استفاده از JSON Web Tokens (JWT) نیاز دارد.
JWT از سرور شما منشأ میگیرد، امضا و رمزگذاری میشود، و برای تعاملات بعدی سرور به کارخواه منتقل میشود تا زمانی که منقضی شود یا دیگر معتبر نباشد.
جزئیات کلید
- از اعتبارنامههای پیشفرض برنامه برای اصالتسنجی و صدور مجوز در Fleet Engine استفاده کنید.
- از حساب سرویس مناسبی برای امضای JWT استفاده کنید. نقشهای Fleet Engine serviceaccount را در مبانی 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 اطمینان حاصل میکند که خودرو قبلاز انجام اصلاحات با سفر درخواستشده مرتبط باشد.
- JWT میتواند هم عملیات خودرو و هم عملیات سفر را پوشش دهد، حتی اگر الزامی نباشد، که ممکن است پیادهسازی امضای JWT را سادهتر کند.
-
tripid:- «کیت توسعه نرمافزار مصرفکننده» همیشه از این ادعا استفاده میکند.
- JWT میتواند هم عملیات خودرو و هم عملیات سفر را پوشش دهد، حتی اگر لازم نباشد، که ممکن است پیادهسازی امضای توکن را سادهتر کند.
تکالیف زمانبندیشده
-
deliveryvehicleidهنگام فراخوانی میاناهای برنامهسازی کاربردی بهازای هر خودرو تحویل، از این استفاده کنید.
-
taskidهنگام فراخوانی میاناهای برنامهسازی کاربردی برای هر تکلیف استفاده کنید.
-
taskidsهنگام تماس با
BatchCreateTasksAPIاستفاده شود. این ادعا باید بهصورت آرایه باشد، و آرایه باید شامل همه شناسههای تکلیف لازم برای تکمیل درخواست باشد. ادعاهایdelivervehicleid،trackingid، یاtaskidرا اضافه نکنید. -
trackingidهنگام تماس با
GetTaskTrackingInfoAPIاز آن استفاده کنید. ادعا باید با شناسه پیگیری در درخواست مطابقت داشته باشد. ادعاهایdelivervehicleid،taskid، یاtaskidsرا اضافه نکنید.
قدم بعدی چیست
- برای درک کامل جریان اصالتسنجی، درباره طراحی امنیتی Fleet Engine بخوانید.
- با نحوه صدور «نشانهای وب JSON» از سرورتان آشنا شوید.