เอกสารนี้อธิบายวิธีออกโทเค็นเว็บ JSON เพื่อเปิดใช้สิทธิ์เข้าถึงข้อมูล Fleet Engine ให้กับแอปบนเว็บและแอปบนอุปกรณ์เคลื่อนที่ หากยังไม่ได้อ่าน โปรดอ่านโทเค็นเว็บ JSON ในส่วนความปลอดภัยใน Fleet Engine เมื่อใช้บริการ Fleet Engine คุณสามารถออก JWT ได้ใน วิธีต่อไปนี้
- ใช้ไลบรารีการให้สิทธิ์ - Google ขอแนะนำให้คุณใช้วิธีนี้ เมื่อโค้ดเบสของคุณเขียนด้วย Java ห้องสมุดแห่งนี้ได้ดำเนินการออก JWT สำหรับ ทุกสถานการณ์ของกรณีการใช้งาน ที่คุณอาจต้องใช้กับบริการและ ช่วยลดความซับซ้อนในการติดตั้งใช้งาน
- สร้าง JWT ของคุณเอง - หากใช้ไลบรารี JWT ของเราไม่ได้ คุณจะต้อง ให้สร้างโค้ดเหล่านี้ลงในฐานของโค้ดของคุณเอง ส่วนนี้จะอธิบายเกี่ยวกับ ตัวอย่างของ JWT สำหรับแต่ละสถานการณ์
วิธีการทำงานของ JWT
สำหรับสภาพแวดล้อมที่ไม่น่าเชื่อถือ เช่น โทรศัพท์มือถือและเว็บเบราว์เซอร์ แบ็กเอนด์ของคุณ เซิร์ฟเวอร์จะออก JWT ที่ทำงานดังต่อไปนี้
โค้ดไคลเอ็นต์ของคุณที่ทำงานอยู่ในสภาพแวดล้อมที่มีความน่าเชื่อถือต่ำเรียกใช้บนเซิร์ฟเวอร์ของคุณ โค้ดทำงานในสภาพแวดล้อมที่เชื่อถือได้อย่างสมบูรณ์เพื่อขอ JWT ที่เหมาะสม เพื่อส่งไปยัง Fleet Engine
JWT จะเชื่อมโยงกับบัญชีบริการ ดังนั้นคำขอจึงส่งไปยัง Fleet Engine เชื่อมโยงกับบัญชีบริการที่ลงนามใน JWT โดยปริยาย
JWT อ้างว่ายังจำกัดทรัพยากรที่ลูกค้าอาจดำเนินการได้อีกด้วย เช่น ยานพาหนะ การเดินทาง หรืองานที่เจาะจง
ใช้ไลบรารีการให้สิทธิ์สำหรับ Java
หากต้องการใช้ไลบรารีการให้สิทธิ์ Fleet Engine สำหรับ Java โปรดไปที่ GitHub ที่เก็บ ห้องสมุดนี้ทำให้การก่อสร้าง Fleet Engine ง่ายขึ้น JWT และลงนามอย่างปลอดภัย ซึ่งจะมอบสิ่งต่อไปนี้
- การประกาศทรัพยากร Dependency ของโปรเจ็กต์
- รายการทั้งหมดของบทบาทบัญชีบริการทั้งหมดสำหรับการเดินทางแบบออนดีมานด์หรือการเดินทางแบบออนดีมานด์ งานที่กำหนดเวลาไว้
- กลไกการลงนามโทเค็นนอกเหนือจากการใช้ไฟล์ข้อมูลเข้าสู่ระบบ เช่น การแอบอ้างบัญชีบริการ
- แนบโทเค็นที่ลงชื่อไว้กับคำขอขาออกซึ่งส่งจากต้นขั้ว gRPC หรือ ไลบรารีของไคลเอ็นต์ Google API Codegen (GAPIC)
- คำแนะนำในการผสานรวมผู้ลงนามกับไลบรารีของไคลเอ็นต์ Fleet Engine
หากคุณออก JWT จากรหัสของคุณ
หากใช้ไลบรารีการให้สิทธิ์สําหรับ Java ไม่ได้ คุณต้องใช้ JWT ในโค้ดเบสของคุณเอง ส่วนนี้จะแสดงหลักเกณฑ์ 2-3 ข้อในการสร้าง โทเค็น โปรดดู JSON Web Token ในส่วนความปลอดภัยใน Fleet Engine สำหรับรายการฟิลด์และการอ้างสิทธิ์ JWT โปรดดูบัญชีบริการ บทบาทสำหรับบทบาทบัญชีบริการที่ Fleet Engine ใช้ โปรดดู ส่วนต่อไปนี้เพื่อดูรายการตัวอย่างของ JWT สำหรับการเดินทางแบบออนดีมานด์ หรือ งานที่กำหนดเวลาไว้
หลักเกณฑ์ทั่วไป
- ใช้บัญชีและบทบาทที่เหมาะสม บัญชีบริการและ
ที่เกี่ยวข้องทำให้มั่นใจได้ว่าผู้ใช้ที่ส่งคำขอโทเค็นได้รับอนุญาตให้
ดูข้อมูลที่โทเค็นให้สิทธิ์ในการเข้าถึง กล่าวโดยละเอียดคือ
- หากลงนาม JWT เพื่อส่งไปยังอุปกรณ์เคลื่อนที่ ให้ใช้บริการ สำหรับบทบาท Driver หรือ Consumer SDK มิเช่นนั้น อุปกรณ์เคลื่อนที่ อุปกรณ์จะแก้ไขและเข้าถึงข้อมูลที่ไม่ควรมีสิทธิ์เข้าถึงได้
- หากลงนามใน JWT เพื่อใช้สำหรับการโทรที่ได้รับสิทธิ์ ให้ใช้บริการ ที่มีบทบาทผู้ดูแลระบบ Fleet Engine ที่ถูกต้องเมื่อใช้ ADC หรือ JWT มิฉะนั้นการดำเนินการจะล้มเหลว
- แชร์เฉพาะโทเค็นที่สร้างขึ้น โปรดอย่าแชร์ข้อมูลเข้าสู่ระบบที่ใช้เพื่อ สร้างโทเค็น
- สำหรับการเรียก gRPC กลไกการแนบโทเค็นจะขึ้นอยู่กับ
ภาษาและเฟรมเวิร์กที่ใช้ในการโทร กลไกการระบุ
โทเค็นของการเรียก HTTP คือการใส่ส่วนหัว
Authorization
พร้อมกับผู้ถือ โทเค็นซึ่งมีค่าเป็นโทเค็น - ส่งคืนเวลาหมดอายุ เซิร์ฟเวอร์จะต้องแสดงเวลาหมดอายุสำหรับ โดยทั่วไปจะใช้เวลาเป็นวินาที
- หากต้องการสร้างและลงนาม JSON โดยตรงในฐานะผู้ถือโทเค็น ให้ใช้ แทนที่จะใช้โทเค็นเพื่อการเข้าถึง OAuth 2.0 โปรดอ่านคำแนะนำสำหรับบริการ การให้สิทธิ์บัญชีที่ไม่มี OAuth ในข้อมูลระบุตัวตน เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์
สำหรับการเดินทางแบบออนดีมานด์
- เมื่อสร้างเพย์โหลด JWT ให้เพิ่มการอ้างสิทธิ์เพิ่มเติมในการให้สิทธิ์
ส่วนที่มีคีย์
vehicleid
หรือtripid
ตั้งเป็นค่าของยานพาหนะ รหัสหรือรหัสการเดินทางที่ใช้โทร
สำหรับงานที่กำหนดเวลาไว้
- เมื่อเซิร์ฟเวอร์ของคุณเรียก API อื่นๆ โทเค็นต้องมีส่วน
ข้ออ้างที่เหมาะสม สำหรับขั้นตอนนี้ คุณสามารถดำเนินการดังต่อไปนี้
- ตั้งค่าของแต่ละคีย์เป็น
*
- ให้สิทธิ์การเข้าถึง
taskids
และdeliveryvehicleids
ทั้งหมดแก่ผู้ใช้ สิ่งต้องทำ คุณต้องเพิ่มการอ้างสิทธิ์เพิ่มเติมในส่วนการให้สิทธิ์ที่มี คีย์taskid
และdeliveryvehicleid
- เมื่อใช้เครื่องหมายดอกจัน (
*
) ในการอ้างสิทธิ์taskids
แอตทริบิวต์ดังกล่าวต้องเป็น ในอาร์เรย์
- ตั้งค่าของแต่ละคีย์เป็น
ตัวอย่าง JWT สำหรับการเดินทางแบบออนดีมานด์
ส่วนนี้จะแสดงตัวอย่าง JWT สำหรับสถานการณ์ที่พบบ่อยหากคุณใช้บริการแบบออนดีมานด์ การเดินทาง
โทเค็นตัวอย่างสำหรับการดำเนินการของแอปไดรเวอร์
{
"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_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"
}
}
ตัวอย่างของ JWT สำหรับการปฏิบัติงานของกองยานพาหนะ
ส่วนนี้จะแสดงตัวอย่าง JWT สำหรับสถานการณ์ทั่วไปในการใช้งานกลุ่มรถ
ตัวอย่างโทเค็นสำหรับติดตามงานและยานพาหนะทั้งหมดในกองยานพาหนะ
ตัวอย่างต่อไปนี้คือโทเค็นที่ติดตามงานและยานพาหนะทั้งหมดใน จากแอปพลิเคชันบนเว็บที่โอเปอเรเตอร์ใช้ สิทธิ์ที่จําเป็นสําหรับการดําเนินการเหล่านี้มีมากกว่าสําหรับแอปพลิเคชันไคลเอ็นต์ โปรดดูตั้งค่าไลบรารีการติดตามฟลีต JavaScript สําหรับการใช้งานฝั่งไคลเอ็นต์ที่จะใช้โทเค็นนี้
ลงนามในโทเค็นโดยใช้บทบาท
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": "*",
}
}
วิธีการตรวจสอบสิทธิ์ทางเลือกสำหรับการดำเนินการของเซิร์ฟเวอร์แบ็กเอนด์
Google ขอแนะนำให้คุณใช้ ADC เพื่อตรวจสอบสิทธิ์การทำงานของเซิร์ฟเวอร์แบ็กเอนด์ ถ้า คุณใช้ ADC ไม่ได้และจำเป็นต้องใช้ 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_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": "*" } }
ขั้นตอนถัดไป
- ยืนยันการตั้งค่าเพื่อให้คุณสามารถสร้างยานพาหนะทดลองและตรวจสอบว่า โทเค็นของคุณทำงานได้ตามที่ตั้งใจไว้
- สำหรับข้อมูลเกี่ยวกับการใช้ ADC แทน JWT สำหรับการดำเนินการของเซิร์ฟเวอร์แบ็กเอนด์ โปรดดูภาพรวมการรักษาความปลอดภัย