เอกสารนี้ครอบคลุมวิธีออกโทเค็นเว็บ JSON ซึ่งเป็นส่วนหนึ่งของการเปิดใช้แอปบนเว็บและแอปบนอุปกรณ์เคลื่อนที่ให้เข้าถึงข้อมูล Fleet Engine หากยังไม่ได้ดำเนินการ โปรดอ่านโทเค็นเว็บ JSON ในส่วนความปลอดภัยใน Fleet Engine บริการ Fleet Engine ช่วยให้คุณออก JWT ได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- ใช้ไลบรารีการให้สิทธิ์ - Google ขอแนะนำให้คุณใช้วิธีนี้ เมื่อเขียนฐานของโค้ดใน Java ไลบรารีนี้จะจัดการการออก JWT สำหรับ สถานการณ์การใช้งานทั้งหมดที่คุณอาจต้องใช้กับบริการ และช่วย ลดความซับซ้อนในการติดตั้งใช้งานของคุณได้อย่างมาก
- สร้าง JWT ของคุณเอง - หากใช้ไลบรารี JWT ของเราไม่ได้ คุณจะต้อง สร้าง JWT เหล่านี้ลงในโค้ดเบสของคุณเอง ส่วนนี้จะแสดงตัวอย่าง JWT ต่างๆ สำหรับแต่ละสถานการณ์
วิธีการทำงานของ JWT
สำหรับสภาพแวดล้อมที่ไม่น่าเชื่อถือ เช่น โทรศัพท์มือถือและเว็บเบราว์เซอร์ เซิร์ฟเวอร์แบ็กเอนด์ จะออก JWT ที่ทำงานดังนี้
โค้ดไคลเอ็นต์ที่ทำงานในสภาพแวดล้อมที่มีความน่าเชื่อถือต่ำจะเรียกใช้โค้ดเซิร์ฟเวอร์ ที่ทำงานในสภาพแวดล้อมที่มีความน่าเชื่อถือสูงเพื่อขอ JWT ที่เหมาะสม เพื่อส่งไปยัง Fleet Engine
JWT เชื่อมโยงกับบัญชีบริการ ดังนั้นคำขอที่ส่งไปยัง Fleet Engine จะเชื่อมโยงกับบัญชีบริการที่ลงนามใน JWT โดยปริยาย
การอ้างสิทธิ์ JWT จะจำกัดทรัพยากรที่ไคลเอ็นต์ดำเนินการได้เพิ่มเติม เช่น ยานพาหนะ การเดินทาง หรืองานที่เฉพาะเจาะจง
ใช้ไลบรารีการให้สิทธิ์สำหรับ Java
หากต้องการใช้ไลบรารีการให้สิทธิ์ Fleet Engine สำหรับ Java โปรดไปที่ที่เก็บ GitHub ไลบรารีช่วยลดความซับซ้อนในการสร้าง JWT ของ Fleet Engine และลงนามอย่างปลอดภัย โดยจะแสดงข้อมูลต่อไปนี้
- การประกาศทรัพยากร Dependency ของโปรเจ็กต์
- รายการบทบาทบัญชีบริการทั้งหมดสำหรับทั้งการเดินทางตามต้องการหรืองานที่กำหนดเวลาไว้
- กลไกการลงนามโทเค็นนอกเหนือจากการใช้ไฟล์ข้อมูลเข้าสู่ระบบ เช่น การทำหน้าที่แทนบัญชีบริการ
- แนบโทเค็นที่ลงชื่อแล้วกับคำขอขาออกที่สร้างจากทั้ง gRPC Stub หรือไลบรารีของไคลเอ็นต์ Google API Codegen (GAPIC)
- วิธีการผสานรวมผู้ลงนามกับไลบรารีของไคลเอ็นต์ Fleet Engine
หากคุณออก JWT จากโค้ด
หากใช้ไลบรารีการให้สิทธิ์สำหรับ Java ไม่ได้ คุณต้องใช้ JWT ใน โค้ดเบสของคุณเอง ส่วนนี้จะให้หลักเกณฑ์บางประการในการสร้างโทเค็นของคุณเอง ดูโทเค็นเว็บ JSON ในส่วนความปลอดภัยใน Fleet Engine เพื่อดูรายการฟิลด์และการอ้างสิทธิ์ของ JWT ดูบทบาทของบัญชีบริการที่ Fleet Engine ใช้ได้ที่บทบาทของบัญชีบริการ ดูรายการตัวอย่าง JWT สำหรับการเดินทางตามคำขอหรืองานที่กำหนดเวลาไว้ในส่วนต่อไปนี้
หลักเกณฑ์ทั่วไป
- ใช้บัญชีบริการและบทบาทที่เหมาะสม บัญชีบริการและ
บทบาทที่เชื่อมโยงกันช่วยให้มั่นใจได้ว่าผู้ใช้ที่ขอโทเค็นมีสิทธิ์
ดูข้อมูลที่โทเค็นให้สิทธิ์เข้าถึง โดยเฉพาะอย่างยิ่ง
- หากลงชื่อ JWT เพื่อส่งไปยังอุปกรณ์เคลื่อนที่ ให้ใช้บัญชีบริการสำหรับบทบาท 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 ReaderCloud 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 สำหรับการดำเนินการของเซิร์ฟเวอร์แบ็กเอนด์ได้ที่ภาพรวมด้านความปลอดภัย