JSON Web Token (JWT) یک استاندارد وب باز است که برای احراز هویت و اجازه تبادل اطلاعات بین مشتری و سرور استفاده میشود. هنگامی که یک کاربر برنامه برای اولین بار با اعتبار نقش مناسب وارد سیستم می شود، سرور یک JWT رمزگذاری شده و با امضای دیجیتالی را برای استفاده در درخواست های بعدی ایجاد و برمی گرداند. این فرآیند هم کاربر را احراز هویت می کند و هم به آنها اجازه می دهد تا بر اساس نقش حساب کاربری خود به مسیرها، خدمات و منابع دسترسی داشته باشند.
برای فراخوانیهای روش API از محیطهای کماعتماد ، Fleet Engine به استفاده از JSON Web Tokens (JWT) که توسط یک حساب سرویس مناسب امضا شدهاند، نیاز دارد. محیط های کم اعتماد شامل گوشی های هوشمند و مرورگرها هستند. یک JWT در سرور شما ایجاد می شود که یک محیط کاملاً قابل اعتماد است. JWT امضا می شود، رمزگذاری می شود و برای تعاملات بعدی سرور به مشتری ارسال می شود تا زمانی که منقضی شود یا دیگر معتبر نباشد.
باطن شما باید با استفاده از مکانیزم های استاندارد Application Default Credentials احراز هویت و مجوز در برابر Fleet Engine را صادر کند. مطمئن شوید که از JWT هایی استفاده می کنید که توسط یک حساب سرویس مناسب امضا شده اند. برای فهرستی از نقشهای حساب سرویس، نقشهای حساب خدمات Fleet Engine را در Fleet Engine Basics ببینید.
در مقابل، باطن شما باید با استفاده از مکانیزمهای استاندارد Application Default Credentials، احراز هویت و مجوز در برابر Fleet Engine را صادر کند.
برخلاف کلیدهای API، JWT ها عمر کوتاهی دارند و عملیات را فقط به مواردی محدود می کنند که نقش مجاز به انجام آنها باشد. برای اطلاعات بیشتر در مورد JWT ها، به JSON Web Tokens در ویکی پدیا مراجعه کنید. برای جزئیات بیشتر در مورد نقشهای دسترسی، نقشهای حساب سرویس را در این راهنما ببینید.
عناصر JWT
JWT ها شامل یک هدر و یک بخش ادعا هستند. بخش هدر حاوی اطلاعاتی مانند کلید خصوصی به دست آمده از حساب های سرویس و الگوریتم رمزگذاری است. بخش ادعا شامل اطلاعاتی مانند زمان ایجاد JWT، زمان زندگی، خدماتی است که JWT ادعا می کند به آنها دسترسی دارد و سایر اطلاعات مجوز برای دسترسی به محدوده. به عنوان مثال، شناسه وسیله نقلیه تحویل.
جدول زیر جزئیات توصیفی در مورد فیلدهای JWT به طور کلی، و همچنین اطلاعات خاصی در مورد جایی که می توانید مقادیر این فیلدها را در پروژه Fleet Engine Cloud خود بیابید، ارائه می دهد.
میدان | توضیحات |
---|---|
alg | الگوریتم مورد استفاده "RS256". |
تایپ کنید | نوع توکن "JWT". |
بچه | شناسه کلید خصوصی حساب سرویس شما. می توانید این مقدار را در قسمت |
میدان | توضیحات |
---|---|
iss | آدرس ایمیل حساب سرویس شما که در قسمت |
فرعی | آدرس ایمیل حساب سرویس شما که در قسمت |
aud | |
iat | مهر زمانی که JWT ایجاد شد، مشخص شده بر حسب ثانیه های سپری شده از ساعت 00:00:00 |
انقضا | مهر زمانی که JWT منقضی میشود، مشخص شده بر حسب ثانیه از |
مجوز | بسته به مورد استفاده، ممکن است حاوی در صورت تعیین وظایف، محدوده مجوز باید یک آرایه به یکی از اشکال زیر باشد: "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
را شامل نشود.
بعدش چی
- برای درک کامل جریان احراز هویت، درباره طراحی امنیتی Fleet Engine بخوانید.
- با نحوه صدور رمزهای وب JSON از سرور خود آشنا شوید.