โทเค็นเว็บ JSON

โทเค็นเว็บ JSON (JWT) เป็นมาตรฐานเว็บแบบเปิดที่ใช้สำหรับตรวจสอบสิทธิ์และอนุญาตให้แลกเปลี่ยนข้อมูลระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ เมื่อผู้ใช้แอปลงชื่อเข้าใช้ด้วยข้อมูลเข้าสู่ระบบของบทบาทที่เหมาะสมเป็นครั้งแรก เซิร์ฟเวอร์จะสร้างและแสดงผล JWT ที่เข้ารหัสและลงชื่อแบบดิจิทัลเพื่อใช้กับคำขอที่ตามมา กระบวนการนี้จะตรวจสอบสิทธิ์ของผู้ใช้และอนุญาตให้ผู้ใช้เข้าถึงเส้นทาง บริการ และทรัพยากรตามบทบาทของบัญชี

สําหรับการเรียกใช้เมธอด API จากสภาพแวดล้อมที่มีระดับความน่าเชื่อถือต่ำ Fleet Engine จะกำหนดให้ใช้ JSON Web Token (JWT) ที่ลงนามโดยบัญชีบริการที่เหมาะสม สภาพแวดล้อมที่มีระดับความน่าเชื่อถือต่ำ ได้แก่ สมาร์ทโฟนและเบราว์เซอร์ JWT สร้างขึ้นจากเซิร์ฟเวอร์ของคุณ ซึ่งเป็นสภาพแวดล้อมที่เชื่อถือได้ทั้งหมด JWT ได้รับการรับรอง เข้ารหัส และส่งไปยังไคลเอ็นต์สำหรับการโต้ตอบกับเซิร์ฟเวอร์ในภายหลังจนกว่าจะหมดอายุหรือไม่ถูกต้องอีกต่อไป

แบ็กเอนด์ควรตรวจสอบสิทธิ์และอนุญาตกับ Fleet Engine โดยใช้กลไกข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันมาตรฐาน โปรดตรวจสอบว่าคุณใช้ JWT ที่ลงชื่อโดยบัญชีบริการที่เหมาะสม ดูรายการบทบาทของบัญชีบริการได้ที่บทบาทบัญชีบริการของ Fleet Engine ในข้อมูลเบื้องต้นเกี่ยวกับ Fleet Engine

ในทางกลับกัน แบ็กเอนด์ควรตรวจสอบสิทธิ์และให้สิทธิ์กับ Fleet Engine โดยใช้กลไกข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันมาตรฐาน

JWT มีอายุสั้นและจำกัดการดำเนินการไว้เฉพาะที่บทบาทได้รับอนุญาตให้ดำเนินการเท่านั้น ซึ่งแตกต่างจากคีย์ API ดูข้อมูลเพิ่มเติมเกี่ยวกับ JWT ได้ที่หัวข้อJSON Web Token ใน Wikipedia โปรดดูรายละเอียดเกี่ยวกับบทบาทการเข้าถึงที่หัวข้อบทบาทของบัญชีบริการในคู่มือนี้

องค์ประกอบ JWT

JWT มีส่วนหัวและส่วนการอ้างสิทธิ์ ส่วนส่วนหัวมีข้อมูล เช่น คีย์ส่วนตัวที่ได้รับจากบัญชีบริการและอัลกอริทึมการเข้ารหัส ส่วนการอ้างสิทธิ์มีข้อมูล เช่น เวลาสร้างของ JWT, ระยะเวลาที่ใช้งานได้, บริการที่ JWT อ้างสิทธิ์เข้าถึง และข้อมูลการให้สิทธิ์อื่นๆ เพื่อกําหนดขอบเขตการเข้าถึง เช่น รหัสยานพาหนะนำส่ง

ตารางต่อไปนี้แสดงรายละเอียดที่อธิบายเกี่ยวกับฟิลด์ JWT โดยทั่วไป รวมถึงข้อมูลเฉพาะเกี่ยวกับตําแหน่งที่คุณจะเห็นค่าของฟิลด์เหล่านี้ในโปรเจ็กต์ Fleet Engine Cloud

ช่องส่วนหัว JWT

ฟิลด์

คำอธิบาย

alg

อัลกอริทึมที่จะใช้ `RS256`

typ

ประเภทของโทเค็น `JWT`

บุตรหลาน

รหัสคีย์ส่วนตัวของบัญชีบริการ คุณดูค่านี้ได้ในช่อง private_key_id ของไฟล์ JSON ของบัญชีบริการ ตรวจสอบว่าคุณใช้คีย์จากบัญชีบริการที่มีสิทธิ์ในระดับที่ถูกต้อง

ช่องการอ้างสิทธิ์ JWT

ฟิลด์

คำอธิบาย

iss

อีเมลของบัญชีบริการ ซึ่งอยู่ในช่อง client_email ของไฟล์ JSON ของบัญชีบริการ

สำรอง

อีเมลของบัญชีบริการ ซึ่งอยู่ในช่อง client_email ของไฟล์ JSON ของบัญชีบริการ

aud

SERVICE_NAME ของบัญชีบริการ ซึ่งในกรณีนี้คือ https://fleetengine.googleapis.com/

iat

การประทับเวลาเมื่อสร้าง JWT ซึ่งระบุเป็นวินาทีที่ล่วงเลยมาตั้งแต่ 00:00:00 UTC, January 1, 1970 โปรดรอ 10 นาที หากการประทับเวลาอยู่ในช่วงอดีตหรืออนาคตมากเกินไป เซิร์ฟเวอร์อาจรายงานข้อผิดพลาด

exp

การประทับเวลาที่ JWT จะหมดอายุ ซึ่งระบุเป็นวินาทีนับตั้งแต่ 00:00:00 UTC, January 1, 1970 คำขอจะดำเนินการไม่สำเร็จหากการประทับเวลาอยู่ในอนาคตมากกว่า 1 ชั่วโมง

การให้สิทธิ์

อาจประกอบด้วย deliveryvehicleid, trackingid, taskid หรือ taskids ทั้งนี้ขึ้นอยู่กับกรณีการใช้งาน

หากระบุ 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

    ใช้เมื่อเรียก API ตามแต่ละงาน

  • taskids

    ใช้เมื่อโทร BatchCreateTasksAPI การอ้างสิทธิ์นี้ต้องอยู่ในรูปแบบอาร์เรย์ และอาร์เรย์ควรมีรหัสงานทั้งหมดที่จําเป็นในการดําเนินการตามคําขอให้เสร็จสมบูรณ์ อย่าใส่การกล่าวอ้าง delivervehicleid, trackingid หรือ taskid

  • trackingid

    ใช้เมื่อเรียกใช้ GetTaskTrackingInfoAPI การอ้างสิทธิ์ต้องตรงกับรหัสการติดตามในคำขอ อย่าใส่การกล่าวอ้าง delivervehicleid, taskid หรือ taskids

ขั้นตอนถัดไป