این سند نحوه صدور JSON Web Tokens را به عنوان بخشی از امکان دسترسی برنامههای مبتنی بر وب و موبایل به دادههای Fleet Engine را پوشش میدهد. اگر قبلاً این کار را نکردهاید، JSON Web Tokens را در بخش Security in Fleet Engine بخوانید. با سرویس Fleet Engine، می توانید JWT ها را به یکی از روش های زیر صادر کنید:
- از کتابخانه مجوز استفاده کنید — گوگل توصیه می کند زمانی که پایگاه کد شما در جاوا نوشته شده است از این روش استفاده کنید. این کتابخانه صدور JWT ها را برای همه سناریوهای موردی که ممکن است با این سرویس نیاز داشته باشید مدیریت می کند و اجرای شما را بسیار ساده می کند.
- JWT های خود را ایجاد کنید — اگر نمی توانید از کتابخانه JWT ما استفاده کنید، باید آنها را در پایگاه کد خود بسازید. این بخش نمونه های مختلف JWT ها را برای هر سناریو ارائه می دهد.
از کتابخانه مجوز برای جاوا استفاده کنید
برای استفاده از کتابخانه مجوز Fleet Engine برای جاوا، از مخزن GitHub دیدن کنید. این کتابخانه ساخت JWTهای Fleet Engine را ساده کرده و آنها را به طور ایمن امضا می کند. موارد زیر را ارائه می دهد:
- اعلامیه های وابستگی پروژه
- فهرست کامل همه نقشهای حساب خدمات برای سفرهای درخواستی یا کارهای برنامهریزی شده
- مکانیسمهای امضای رمز غیر از استفاده از فایلهای اعتبار، مانند جعل هویت یک حساب سرویس
- توکنهای امضا شده را به درخواستهای خروجی که از یک خرد gRPC یا یک کلاینت GAPIC انجام شده است، پیوست میکند.
- دستورالعملهای ادغام امضاکنندگان با کتابخانههای مشتری Fleet Engine
اگر JWT ها را از کد خود صادر می کنید
هنگامی که نمی توانید از کتابخانه مجوز برای جاوا استفاده کنید، باید JWT ها را در پایگاه کد خود پیاده سازی کنید. این بخش چند دستورالعمل برای ایجاد توکن های خود ارائه می دهد. برای فهرستی از نقشهای حساب سرویس و فیلدها و ادعاهای JWT، به JSON Web Tokens در بخش Security in Fleet Engine مراجعه کنید. برای لیستی از نمونه های JWT برای سفرهای درخواستی یا کارهای برنامه ریزی شده به بخش زیر مراجعه کنید.
دستورالعمل های عمومی
- از نقش های مناسب استفاده کنید . این تضمین می کند که کاربر درخواست کننده رمز مجاز به مشاهده اطلاعاتی است که توکن به آنها اجازه دسترسی به آنها را می دهد. به طور مشخص:
- هنگام امضای JWT برای انتقال به دستگاه تلفن همراه، از حساب سرویس برای نقش Driver یا Consumer SDK استفاده کنید . در غیر این صورت، دستگاه تلفن همراه توانایی تغییر حالتی را که نباید داشته باشد خواهد داشت.
- به همین ترتیب، هنگام امضای JWT برای استفاده برای تماسهای ممتاز، مطمئن شوید که از حساب سرویس با نقش مدیریت Fleet Engine صحیح استفاده میکنید . در غیر این صورت، عملیات شکست خواهد خورد.
- فقط توکن های ایجاد شده را به اشتراک بگذارید . هرگز اعتبار مورد استفاده برای ایجاد توکن ها را به اشتراک نگذارید.
- برای تماسهای gRPC ، مکانیسم پیوست کردن توکن به زبان و چارچوب مورد استفاده برای برقراری تماس بستگی دارد. مکانیسم تعیین یک نشانه برای یک تماس HTTP شامل یک هدر
Authorization
با یک توکن حامل است که مقدار آن توکن است. - زمان انقضا را برگردانید. سرور شما باید یک زمان انقضا را برای توکن برگرداند، معمولاً در چند ثانیه.
- برای ایجاد و امضای مستقیم یک JSON بهعنوان حامل نشانه ، بهجای استفاده از نشانههای دسترسی OAuth 2.0، دستورالعملهای مجوز حساب سرویس بدون OAuth را در مستندات Identity Developer بخوانید.
برای سفرهای درخواستی
- هنگام ایجاد محموله JWT، یک ادعای اضافی در بخش مجوز با کلید
vehicleid
یاtripid
تنظیم شده به ارزش شناسه وسیله نقلیه یا شناسه سفری که تماس برای آن برقرار شده است، اضافه کنید.
برای کارهای برنامه ریزی شده
- هنگامی که سرور شما API های دیگر را فراخوانی می کند، توکن ها نیز باید حاوی ادعای مناسب باشند. برای این کار می توانید کارهای زیر را انجام دهید:
- مقدار هر کلید را روی
*
تنظیم کنید. - به کاربر اجازه دسترسی به تمام
taskids
وdeliveryvehicleids
بدهید. برای انجام این کار، یک ادعای اضافی در بخش مجوز با کلیدهایtaskid
وdeliveryvehicleid
اضافه میکنید. - هنگام استفاده از ستاره (
*
) در ادعایtaskids
، باید تنها عنصر در آرایه باشد.
- مقدار هر کلید را روی
نمونه های JWT برای سفرهای درخواستی
اگر از سفرهای درخواستی استفاده می کنید، این بخش نمونه های JWT را برای سناریوهای رایج ارائه می دهد.
نشانه مثال برای عملیات سرور باطن
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_provider_service_account"
}
.
{
"iss": "provider@yourgcpproject.iam.gserviceaccount.com",
"sub": "provider@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"vehicleid": "*",
"tripid": "*"
}
}
نشانه مثال برای عملیات برنامه درایور
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_driver_service_account"
}
.
{
"iss": "driver@yourgcpproject.iam.gserviceaccount.com",
"sub": "driver@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"vehicleid": "driver_12345"
}
}
نشانه مثال برای عملیات برنامه مصرف کننده
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
"sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"tripid": "trip_54321"
}
}
مثال های JWT برای کارهای زمان بندی شده
اگر از وظایف زمانبندی شده استفاده میکنید، این بخش مثال JWT را برای سناریوهای معمولی ارائه میکند.
نشانه مثال برای عملیات سرور باطن
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_provider_service_account"
}
.
{
"iss": "provider@yourgcpproject.iam.gserviceaccount.com",
"sub": "provider@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"taskid": "*"
}
}
توکن مثال برای عملیات ایجاد وظایف دسته ای سرور باطن
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_provider_service_account"
}
.
{
"iss": "provider@yourgcpproject.iam.gserviceaccount.com",
"sub": "provider@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"taskids": ["*"]
}
}
توکن مثالی برای عملیات سرور پشتیبان در هر تحویل-خودرو
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_provider_service_account"
}
.
{
"iss": "provider@yourgcpproject.iam.gserviceaccount.com",
"sub": "provider@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"deliveryvehicleid": "*"
}
}
توکن نمونه برای یک برنامه درایور
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_delivery_driver_service_account"
}
.
{
"iss": "driver@yourgcpproject.iam.gserviceaccount.com",
"sub": "driver@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"deliveryvehicleid": "driver_12345"
}
}
توکن نمونه برای یک برنامه مصرف کننده
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_delivery_consumer_service_account"
}
.
{
"iss": "consumer@yourgcpproject.iam.gserviceaccount.com",
"sub": "consumer@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"authorization": {
"trackingid": "shipment_12345"
}
}
توکن نمونه برای ردیابی تمام وظایف و وسایل نقلیه
مثال زیر توکنی است که تمام وظایف و وسایل نقلیه ناوگان را ردیابی می کند. برای اجرای سمت کلاینت که از این نشانه استفاده می کند ، به تنظیم کتابخانه ردیابی ناوگان جاوا اسکریپت مراجعه کنید:
توکن را با استفاده از نقش
Fleet Engine Delivery Fleet Reader
Cloud IAM امضا کنید.
{
"alg": "RS256",
"typ": "JWT",
"kid": "private_key_id_of_consumer_service_account"
}
.
{
"iss": "superuser@yourgcpproject.iam.gserviceaccount.com",
"sub": "superuser@yourgcpproject.iam.gserviceaccount.com",
"aud": "https://fleetengine.googleapis.com/",
"iat": 1511900000,
"exp": 1511903600,
"scope": "https://www.googleapis.com/auth/xapi",
"authorization": {
"taskid": "*",
"deliveryvehicleid": "*",
}
}
بعدش چی
- تنظیمات خود را تأیید کنید تا بتوانید یک وسیله نقلیه آزمایشی ایجاد کنید و اطمینان حاصل کنید که توکنهای شما طبق برنامه کار میکنند