توکن وب JSON (JWT) یک استاندارد وب باز است که برای احراز هویت و مجوز تبادل اطلاعات بین کلاینت و سرور استفاده میشود. هنگامی که یک کاربر برنامه برای اولین بار با اعتبارنامههای نقش مناسب وارد سیستم میشود، سرور یک JWT رمزگذاری شده و دارای امضای دیجیتالی را برای استفاده در درخواستهای بعدی ایجاد و ارسال میکند. این فرآیند هم کاربر را احراز هویت میکند و هم به آنها اجازه میدهد تا بر اساس نقش حساب کاربری خود به مسیرها، سرویسها و منابع دسترسی داشته باشند.
موتور ناوگان (Fleet Engine) برای فراخوانی متدهای API از محیطهای کماعتماد (مثل تلفنهای هوشمند و مرورگرها) نیاز به استفاده از توکنهای وب JSON (JWT) دارد.
یک JWT از سرور شما سرچشمه میگیرد، امضا و رمزگذاری میشود و برای تعاملات بعدی با سرور به کلاینت ارسال میشود تا زمانی که منقضی شود یا دیگر معتبر نباشد.
جزئیات کلیدی
- از اعتبارنامههای پیشفرض برنامه برای تأیید اعتبار و مجوزدهی در برابر Fleet Engine استفاده کنید.
- از یک حساب کاربری سرویس مناسب برای امضای JWTها استفاده کنید. به نقشهای حساب کاربری سرویس Fleet Engine در اصول اولیه Fleet Engine مراجعه کنید.
برخلاف کلیدهای API، JWTها کوتاهمدت هستند و عملیات را فقط به مواردی محدود میکنند که نقش مجاز به انجام آنها است. برای اطلاعات بیشتر در مورد JWTها، به JSON Web Tokens در ویکیپدیا مراجعه کنید. برای جزئیات بیشتر در مورد نقشهای دسترسی، به نقشهای حساب سرویس در این راهنما مراجعه کنید.
عناصر JWT
JWTها شامل یک سربرگ و یک بخش Claim هستند. بخش Header شامل اطلاعاتی مانند کلید خصوصی به دست آمده از حسابهای سرویس و الگوریتم رمزگذاری است. بخش Claim شامل اطلاعاتی مانند زمان ایجاد JWT، زمان حیات، سرویسهایی که JWT ادعای دسترسی به آنها را دارد و سایر اطلاعات مجوز برای دسترسی به محدوده؛ به عنوان مثال، شناسه وسیله نقلیه تحویل است.
جدول زیر جزئیات توصیفی در مورد فیلدهای JWT به طور کلی، و همچنین اطلاعات خاصی در مورد محل یافتن مقادیر این فیلدها در پروژه Fleet Engine Cloud شما ارائه میدهد.
میدان | توضیحات |
|---|---|
الج | الگوریتم مورد استفاده. `RS256`. |
تایپ | نوع توکن. `JWT`. |
بچه | شناسه کلید خصوصی حساب سرویس شما. میتوانید این مقدار را در فیلد |
میدان | توضیحات |
|---|---|
ایس | آدرس ایمیل حساب سرویس شما، که در فیلد |
فرعی | آدرس ایمیل حساب سرویس شما، که در فیلد |
آد | |
آی تی | مهر زمانی هنگام ایجاد JWT، که بر حسب ثانیه از ساعت 00:00:00 |
تاریخ انقضا | مهر زمانی که JWT منقضی میشود، که بر حسب ثانیه از |
مجوز | بسته به مورد استفاده، ممکن است حاوی در صورت مشخص کردن taskidها، محدوده مجوز باید یک آرایه به یکی از شکلهای زیر باشد: "taskids": ["task_id_one","task_id_two"]یا "taskids": ["*"] |
ادعاهای JWT در مورد موتور ناوگان
موتور ناوگان از ادعاهای خصوصی استفاده میکند. استفاده از ادعاهای خصوصی تضمین میکند که فقط مشتریان مجاز میتوانند به دادههای خود دسترسی داشته باشند.
برای مثال، وقتی سرور شما یک JSON Web Token برای دستگاه تلفن همراه راننده صادر میکند، باید شامل یا ادعای vehicleid یا ادعای deliveryvehicleid با مقدار شناسه وسیله نقلیه آن راننده باشد. سپس، بسته به نقش راننده، JWTها فقط دسترسی را برای شناسه وسیله نقلیه خاص و نه هیچ شناسه وسیله نقلیه دلخواه دیگری فعال میکنند.
موتور ناوگان از ادعاهای خصوصی زیر استفاده میکند:
سفرهای درخواستی
-
vehicleid:- درایور SDK همیشه از این ادعا استفاده میکند، چه در حال رانندگی در سفر باشد و چه در حال رانندگی در وسیله نقلیه. بخش پشتیبانی Fleet Engine قبل از انجام اصلاحات، اطمینان حاصل میکند که وسیله نقلیه با سفر درخواستی مرتبط است.
- JWT میتواند عملیات مربوط به وسیله نقلیه و سفر را پوشش دهد، حتی اگر مورد نیاز نباشد، که این امر میتواند پیادهسازی امضای JWT را سادهتر کند.
-
tripid:- SDK مصرفکننده همیشه از این ادعا استفاده میکند.
- JWT میتواند عملیات مربوط به وسیله نقلیه و سفر را پوشش دهد، حتی اگر مورد نیاز نباشد، که این امر میتواند پیادهسازی امضای توکن را سادهتر کند.
وظایف برنامهریزیشده
deliveryvehicleidهنگام فراخوانی APIهای مربوط به هر وسیله نقلیه تحویلی، از این مورد استفاده کنید.
taskidهنگام فراخوانی APIهای هر وظیفه، از آن استفاده کنید.
taskidsهنگام فراخوانی
BatchCreateTasksAPIاستفاده شود. این ادعا باید به صورت آرایه باشد و آرایه باید شامل تمام شناسههای وظیفه لازم برای تکمیل درخواست باشد. ادعاهایdelivervehicleid،trackingidیاtaskidرا وارد نکنید.trackingidهنگام فراخوانی
GetTaskTrackingInfoAPIاستفاده شود. claim باید با tracking ID موجود در درخواست مطابقت داشته باشد. claim هایdelivervehicleid،taskidیاtaskidsرا وارد نکنید.
قدم بعدی چیست؟
- برای درک کامل جریان احراز هویت، درباره طراحی امنیتی Fleet Engine مطالعه کنید.
- بیاموزید که چگونه توکنهای وب JSON را از سرور خود صادر کنید .