โทเค็นเว็บ JSON (JWT) เป็นมาตรฐานเว็บแบบเปิดที่ใช้สำหรับการตรวจสอบสิทธิ์ และให้สิทธิ์การแลกเปลี่ยนข้อมูลระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ เมื่อผู้ใช้แอป ลงชื่อเข้าใช้เป็นครั้งแรกด้วยข้อมูลเข้าสู่ระบบที่มีบทบาทที่เหมาะสม เซิร์ฟเวอร์จะสร้าง และส่งคืน JWT ที่เข้ารหัสและลงชื่อแบบดิจิทัลเพื่อใช้กับคำขอที่ตามมา กระบวนการนี้จะตรวจสอบสิทธิ์ผู้ใช้และให้สิทธิ์ผู้ใช้ในการเข้าถึงเส้นทาง บริการ และทรัพยากรตามบทบาทของบัญชี
Fleet Engine กำหนดให้ใช้ JSON Web Token (JWT) สำหรับการเรียกเมธอด API จากสภาพแวดล้อมที่มีความน่าเชื่อถือต่ำ ได้แก่ สมาร์ทโฟนและเบราว์เซอร์
JWT มาจากเซิร์ฟเวอร์ของคุณ มีการลงชื่อ เข้ารหัส และส่งไปยังไคลเอ็นต์ สำหรับการโต้ตอบกับเซิร์ฟเวอร์ในภายหลังจนกว่าจะหมดอายุหรือไม่ถูกต้องอีกต่อไป
รายละเอียดสำคัญ
- ใช้ข้อมูลรับรองเริ่มต้นของแอปพลิเคชันเพื่อตรวจสอบสิทธิ์และ ให้สิทธิ์กับ Fleet Engine
- ใช้บัญชีบริการที่เหมาะสมเพื่อลงนามใน JWT ดูบทบาทของบัญชีบริการ Fleet Engine ในข้อมูลพื้นฐานเกี่ยวกับ Fleet Engine
JWT มีอายุสั้นและจำกัดการดำเนินการเฉพาะการดำเนินการที่บทบาทได้รับอนุญาตให้ดำเนินการเท่านั้น ซึ่งแตกต่างจากคีย์ API ดูข้อมูลเพิ่มเติมเกี่ยวกับ JWT ได้ที่ โทเค็นเว็บ JSON ใน Wikipedia ดูรายละเอียดเกี่ยวกับบทบาทการเข้าถึงได้ที่บทบาทของบัญชีบริการในคู่มือนี้
องค์ประกอบ JWT
JWT มีส่วนหัวและส่วนการอ้างสิทธิ์ ส่วนหัวมีข้อมูล เช่น คีย์ส่วนตัวที่ได้จากบัญชีบริการ และอัลกอริทึมการเข้ารหัส ส่วนการอ้างสิทธิ์มีข้อมูล เช่น เวลาสร้างของ JWT อายุการใช้งาน บริการที่ JWT อ้างสิทธิ์ เข้าถึง และข้อมูลการให้สิทธิ์อื่นๆ เพื่อกำหนดขอบเขตการเข้าถึง เช่น รหัสยานพาหนะนำส่ง
ตารางต่อไปนี้แสดงรายละเอียดคำอธิบายเกี่ยวกับฟิลด์ JWT โดยทั่วไป รวมถึงข้อมูลเฉพาะเกี่ยวกับตำแหน่งที่คุณดูค่าของฟิลด์เหล่านี้ได้ ในโปรเจ็กต์ Cloud ของ Fleet Engine
ฟิลด์ |
คำอธิบาย |
---|---|
alg |
อัลกอริทึมที่จะใช้ `RS256` |
typ |
ประเภทของโทเค็น `JWT` |
บุตรหลาน |
รหัสคีย์ส่วนตัวของบัญชีบริการ คุณดูค่านี้ได้ในฟิลด์
|
ฟิลด์ |
คำอธิบาย |
---|---|
iss |
อีเมลของบัญชีบริการ ซึ่งอยู่ในฟิลด์ |
สำรอง |
อีเมลของบัญชีบริการ ซึ่งอยู่ในฟิลด์ |
aud |
|
iat |
การประทับเวลาเมื่อสร้าง JWT โดยระบุเป็นวินาที
ที่ผ่านไปตั้งแต่ 00:00:00 |
exp |
การประทับเวลาเมื่อ JWT หมดอายุ โดยระบุเป็นวินาทีที่ผ่านไป
นับตั้งแต่ |
การให้สิทธิ์ |
อาจมี หากระบุ taskids ขอบเขตการให้สิทธิ์ต้องเป็นอาร์เรย์ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้ "taskids": ["task_id_one","task_id_two"]
หรือ "taskids": ["*"] |
การอ้างสิทธิ์ JWT ของ Fleet Engine
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 จากเซิร์ฟเวอร์