JSON Web Token (JWT) เป็นมาตรฐานเว็บแบบเปิดที่ใช้สำหรับการตรวจสอบสิทธิ์และการให้สิทธิ์การแลกเปลี่ยนข้อมูลระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ เมื่อผู้ใช้แอป ลงชื่อเข้าใช้ด้วยข้อมูลเข้าสู่ระบบของบทบาทที่เหมาะสมเป็นครั้งแรก เซิร์ฟเวอร์จะสร้าง และแสดงผล JWT ที่เข้ารหัสและลงนามแบบดิจิทัลเพื่อใช้กับคำขอที่ตามมา กระบวนการนี้จะตรวจสอบสิทธิ์ผู้ใช้และให้สิทธิ์ผู้ใช้เข้าถึงเส้นทาง บริการ และทรัพยากรตามบทบาทของบัญชี
Fleet Engine กำหนดให้ใช้ JSON Web Token (JWT) สำหรับการเรียกใช้เมธอด API จากสภาพแวดล้อมที่มีความน่าเชื่อถือต่ำ ซึ่งได้แก่ สมาร์ทโฟนและเบราว์เซอร์
JWT มีต้นทางมาจากเซิร์ฟเวอร์ของคุณ โดยมีการลงชื่อ เข้ารหัส และส่งไปยังไคลเอ็นต์สำหรับการโต้ตอบกับเซิร์ฟเวอร์ในภายหลังจนกว่าจะหมดอายุหรือใช้ไม่ได้อีกต่อไป
รายละเอียดสำคัญ
- ใช้ข้อมูลรับรองเริ่มต้นของแอปพลิเคชันเพื่อตรวจสอบสิทธิ์และให้สิทธิ์ Fleet Engine
- ใช้บัญชีบริการที่เหมาะสมเพื่อรับรอง JWT ดูบทบาทบัญชีบริการ Fleet Engine ในข้อมูลเบื้องต้นเกี่ยวกับ Fleet Engine
JWT มีอายุสั้นและจำกัดการดำเนินการเฉพาะที่บทบาทได้รับอนุญาตให้ดำเนินการเท่านั้น ซึ่งต่างจากคีย์ API ดูข้อมูลเพิ่มเติมเกี่ยวกับ JWT ได้ที่ JSON Web Tokens ใน Wikipedia โปรดดูรายละเอียดเกี่ยวกับบทบาทการเข้าถึงที่หัวข้อบทบาทของบัญชีบริการในคู่มือนี้
องค์ประกอบ JWT
JWT มีส่วนหัวและส่วนการอ้างสิทธิ์ ส่วนส่วนหัวประกอบด้วยข้อมูล เช่น คีย์ส่วนตัวที่ได้จากบัญชีบริการ และอัลกอริทึมการเข้ารหัส ส่วนการอ้างสิทธิ์ประกอบด้วยข้อมูลต่างๆ เช่น เวลาที่สร้าง JWT, ระยะเวลาที่ใช้งานได้, บริการที่ JWT อ้างสิทธิ์เข้าถึง และข้อมูลการให้สิทธิ์อื่นๆ เพื่อกำหนดขอบเขตการเข้าถึง เช่น รหัสยานพาหนะนำส่ง
ตารางต่อไปนี้แสดงรายละเอียดที่อธิบายเกี่ยวกับฟิลด์ JWT โดยทั่วไป รวมถึงข้อมูลที่เฉพาะเจาะจงเกี่ยวกับตำแหน่งที่คุณจะค้นหาค่าสำหรับฟิลด์เหล่านี้ในโปรเจ็กต์ Fleet Engine Cloud ได้
ฟิลด์ |
คำอธิบาย |
|---|---|
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 Web Token สำหรับอุปกรณ์เคลื่อนที่ของคนขับ โทเค็นควรมีคำกล่าวอ้าง vehicleid หรือคำกล่าวอ้าง deliveryvehicleid พร้อมค่ารหัสยานพาหนะของคนขับรายนั้น จากนั้น JWT จะอนุญาตให้เข้าถึงเฉพาะรหัสยานพาหนะที่เจาะจงเท่านั้น โดยจะไม่อนุญาตให้เข้าถึงรหัสยานพาหนะอื่นๆ ที่กำหนดเอง ทั้งนี้ขึ้นอยู่กับบทบาทของคนขับ
Fleet Engine ใช้การอ้างสิทธิ์ส่วนตัวต่อไปนี้
การเดินทางแบบออนดีมานด์
-
vehicleid:- Driver SDK จะใช้การอ้างสิทธิ์นี้เสมอ ไม่ว่าจะดำเนินการในการเดินทางหรือยานพาหนะ แบ็กเอนด์ของ Fleet Engine จะตรวจสอบว่ายานพาหนะเชื่อมโยงกับการเดินทางที่ขอไว้ก่อนที่จะทำการแก้ไข
- JWT สามารถครอบคลุมทั้งการดำเนินการเกี่ยวกับยานพาหนะและการเดินทาง แม้ว่าจะไม่จำเป็นก็ตาม ซึ่งอาจช่วยให้การลงนาม JWT ง่ายขึ้น
-
tripid:- Consumer SDK จะใช้การอ้างสิทธิ์นี้เสมอ
- JWT สามารถครอบคลุมทั้งการดำเนินการเกี่ยวกับยานพาหนะและการเดินทาง แม้ว่าจะไม่จำเป็นก็ตาม ซึ่งอาจช่วยให้การลงนามโทเค็นง่ายขึ้น
งานที่กำหนดเวลาไว้
-
deliveryvehicleidใช้เมื่อเรียกใช้ API ต่อยานพาหนะนำส่ง
-
taskidใช้เมื่อเรียกใช้ Tasks API ต่อหนึ่งงาน
-
taskidsใช้เมื่อโทรหา
BatchCreateTasksAPIการอ้างสิทธิ์นี้ต้องอยู่ในรูปแบบอาร์เรย์ และอาร์เรย์ควรมีรหัสงานทั้งหมดที่จำเป็นต่อการดำเนินการตามคำขอให้เสร็จสมบูรณ์ อย่าใส่คำกล่าวอ้างเกี่ยวกับdelivervehicleid,trackingidหรือtaskid -
trackingidใช้เมื่อโทรหา
GetTaskTrackingInfoAPIการอ้างสิทธิ์ต้องตรงกับรหัสติดตามในคำขอ อย่าใส่คำกล่าวอ้างเกี่ยวกับdelivervehicleid,taskidหรือtaskids
ขั้นตอนถัดไป
- อ่านเกี่ยวกับการออกแบบความปลอดภัยของ Fleet Engine เพื่อทำความเข้าใจขั้นตอนการตรวจสอบสิทธิ์ทั้งหมด
- ดูวิธีออกเว็บโทเค็น JSON จากเซิร์ฟเวอร์