การตรวจสอบสิทธิ์และการให้สิทธิ์

ส่วนนี้จะอธิบายแนวคิดการตรวจสอบสิทธิ์และการให้สิทธิ์ที่เกี่ยวข้องกับการผสานรวมกับ Fleet Engine

คุณกำหนดค่าความสามารถที่ได้รับจาก Last Mile Fleet Solution ผ่านคอนโซล Google Cloud ได้ Fleet Engine SDK ต้องใช้โทเค็นเว็บ JSON (JWT) ที่ลงนามโดยบัญชีบริการที่เหมาะสม

ภาพรวม

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

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

หลักการออกแบบการตรวจสอบสิทธิ์

ขั้นตอนการตรวจสอบสิทธิ์ของ Fleet Engine ใช้หลักการออกแบบต่อไปนี้

  • บทบาท IAM กำหนดชุดสิทธิ์ในทรัพยากรที่อนุญาตสำหรับผู้ใช้หลัก ตัวอย่างเช่น บทบาทผู้ดูแลระบบได้รับอนุญาตให้ทำทุกอย่างด้วยข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน ในขณะที่บทบาทไดรเวอร์ที่ไม่น่าเชื่อถือ* จะได้รับอนุญาตให้อัปเดตตำแหน่งยานพาหนะเท่านั้น และจำกัดให้ใช้ JWT ในการตรวจสอบสิทธิ์และการให้สิทธิ์เท่านั้น

  • สำหรับสภาพแวดล้อมที่ไม่น่าเชื่อถือ JWT อ้างสิทธิ์จะจำกัดเอนทิตีที่ผู้โทรอาจดำเนินการอยู่เพิ่มเติม ซึ่งอาจเป็นงานเฉพาะหรือยานพาหนะที่นำส่งสินค้าก็ได้

  • โค้ดที่ทำงานในสภาพแวดล้อมที่มีความน่าเชื่อถือต่ำต้องเรียกใช้โค้ดที่ทำงานในสภาพแวดล้อมที่เชื่อถือได้ก่อนเพื่อออก JWT

  • Fleet Engine ดำเนินการตรวจสอบความปลอดภัยต่อไปนี้ในการเรียก API สำหรับทรัพยากร

    1. ผู้ใช้หลักที่โทรมีสิทธิ์ที่เหมาะสม (ผ่านการมอบหมายบทบาท) สำหรับการดำเนินการกับทรัพยากร

    2. สำหรับบทบาทที่ไม่ใช่ผู้ดูแลระบบ การอ้างสิทธิ์ JWT ที่ส่งผ่านในคำขอจะให้สิทธิ์ที่จำเป็นแก่ทรัพยากร

ขั้นตอนการตรวจสอบสิทธิ์

แผนภาพลำดับต่อไปนี้จะแสดงรายละเอียดขั้นตอนการตรวจสอบสิทธิ์

  1. ผู้ดูแลกลุ่มรถยนต์สร้างบัญชีบริการ

  2. ผู้ดูแลระบบของกลุ่มรถยนต์จะมอบหมายบทบาท IAM เฉพาะให้กับบัญชีบริการ

  3. ผู้ดูแลระบบกลุ่มอุปกรณ์กำหนดค่าแบ็กเอนด์ด้วยบัญชีบริการและข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน

  4. แอปไคลเอ็นต์ขอ JWT จากแบ็กเอนด์ของลูกค้า ผู้ขออาจเป็นแอปไดรเวอร์ แอปสำหรับผู้บริโภค หรือแอปเฝ้าติดตาม

  5. แบ็กเอนด์ของลูกค้าลงนามและออก JWT ให้บัญชีบริการที่เกี่ยวข้อง แอปไคลเอ็นต์จะได้รับ JWT

  6. แอปไคลเอ็นต์จะใช้ JWT เพื่อเชื่อมต่อกับ Fleet Engine เพื่ออ่านหรือแก้ไขข้อมูล ทั้งนี้ขึ้นอยู่กับบทบาท IAM ที่มอบให้ในระหว่างขั้นตอนการตั้งค่า

แผนภาพลำดับการตรวจสอบสิทธิ์

การตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์

หากต้องการตั้งค่าโปรเจ็กต์ระบบคลาวด์ ให้สร้างโปรเจ็กต์ก่อนแล้วจึงสร้างบัญชีบริการ

วิธีสร้างโปรเจ็กต์ Google Cloud

  1. สร้างโปรเจ็กต์ Google Cloud โดยใช้คอนโซล Google Cloud
  2. การใช้ API และแดชบอร์ดบริการเปิดใช้งาน Local Rides and Deliveries API

บัญชีบริการและบทบาท IAM

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

Last Mile Fleet Solution ใช้บทบาทต่อไปนี้

บทบาทคำอธิบาย
ผู้ใช้ไดรเวอร์ที่เชื่อถือได้ของ Fleet Engine Delivery

roles/fleetengine.deliveryTrustedDriver
ให้สิทธิ์สร้างและอัปเดตยานพาหนะและงานนำส่ง รวมถึงการอัปเดตตำแหน่งของยานพาหนะนำส่งและสถานะงาน หรือผลลัพธ์ โดยทั่วไปโทเค็นที่สร้างจากบัญชีบริการที่มีบทบาทนี้จะใช้จากอุปกรณ์เคลื่อนที่ของพนักงานขับรถส่งของหรือจากเซิร์ฟเวอร์แบ็กเอนด์ของคุณ
ผู้ใช้ไดรเวอร์ที่ไม่น่าเชื่อถือของ Fleet Engine Delivery

roles/fleetengine.deliveryUntrustedDriver
ให้สิทธิ์ในการอัปเดตตำแหน่งของยานพาหนะที่นำส่ง โดยทั่วไปแล้วโทเค็นที่สร้างจากบัญชีบริการที่มีบทบาทนี้มักจะใช้จากอุปกรณ์เคลื่อนที่ของพนักงานขับรถส่งอาหาร
ผู้ใช้ผู้บริโภคของ Fleet Engine Delivery

roles/fleetengine.deliveryConsumer
ให้สิทธิ์ค้นหางานโดยใช้รหัสติดตาม และอ่านแต่ไม่อัปเดตข้อมูลงาน โดยทั่วไปแล้วโทเค็นที่สร้างจากบัญชีบริการที่มีบทบาทนี้มักจะใช้จากเว็บเบราว์เซอร์ของผู้ใช้การนำส่ง
ผู้ดูแลระบบ Fleet Engine Delivery

roles/fleetengine.deliveryAdmin
มอบสิทธิ์การอ่านและเขียนสำหรับทรัพยากรการส่ง ผู้ใช้หลักที่มีบทบาทนี้ไม่จำเป็นต้องใช้ JWT และควรใช้ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันแทน ระบบจะไม่สนใจการอ้างสิทธิ์ JWT ที่กำหนดเอง บทบาทนี้ควรจำกัดไว้เฉพาะสำหรับสภาพแวดล้อมที่เชื่อถือได้ (แบ็กเอนด์ของลูกค้า)
ผู้ใช้ Flleet Engine Delivery ขั้นสูง **(เลิกใช้งานแล้ว)**

roles/fleetengine.deliverySuperUser
มอบสิทธิ์เข้าถึง API สำหรับยานพาหนะการนำส่งและ Tasks ทั้งหมด โดยทั่วไปแล้ว เซิร์ฟเวอร์แบ็กเอนด์จะใช้โทเค็นที่สร้างจากบัญชีบริการที่มีบทบาทนี้
ผู้อ่าน Fleet Engine Delivery Fleet

roles/fleetengine.deliveryFleetReader
มอบสิทธิ์ในการอ่านยานพาหนะและงานของการนำส่ง รวมถึงค้นหางานโดยใช้รหัสติดตาม โดยทั่วไปแล้วโทเค็นที่สร้างขึ้นโดยบัญชีบริการที่มีบทบาทนี้มักจะใช้จากเว็บเบราว์เซอร์ของผู้ให้บริการกลุ่มการจัดส่ง

องค์กรที่มีอุปกรณ์ที่จัดการโดยฝ่ายไอทีขององค์กรสามารถใช้ประโยชน์จากความยืดหยุ่นของบทบาทผู้ใช้งานขับรถที่เชื่อถือได้ของ Fleet Engine และเลือกที่จะผสานรวมการโต้ตอบของ Fleet Engine บางส่วนหรือทั้งหมดไว้ในแอปบนอุปกรณ์เคลื่อนที่

องค์กรที่รองรับนโยบาย Bring Your Own Device ควรเลือกใช้ความปลอดภัยของบทบาทผู้ใช้ของผู้ขับที่ไม่น่าเชื่อถือของ Fleet Engine และใช้แอปบนอุปกรณ์เคลื่อนที่ในการส่งการอัปเดตตำแหน่งของรถไปยัง Fleet Engine เท่านั้น ส่วนการโต้ตอบอื่นๆ ทั้งหมดควรมาจากเซิร์ฟเวอร์แบ็กเอนด์ของลูกค้า

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

การสร้างบัญชีบริการ

คุณสร้างบัญชีบริการได้โดยใช้แท็บ IAM & Admin > Service Accounts ใน Google Cloud Console จากรายการบทบาทแบบเลื่อนลง ให้เลือก Flleet Engine และมอบหมายบทบาทใดบทบาทหนึ่งให้กับบัญชีบริการ แนวทางปฏิบัติที่ดีคือการระบุบัญชีที่เชื่อมโยงกับแต่ละบทบาท เช่น ตั้งชื่อที่สื่อความหมายให้บัญชีบริการ

เพื่อความสะดวก หากคุณต้องการสร้าง JWT สำหรับไคลเอ็นต์ที่ไม่น่าเชื่อถือ การเพิ่มผู้ใช้ในบทบาทผู้สร้างโทเค็นบัญชีบริการทำให้ผู้ใช้สร้างโทเค็นด้วยเครื่องมือบรรทัดคำสั่ง gcloud ได้

gcloud projects add-iam-policy-binding project-id \
       --member=user:my-user@example.com \
       --role=roles/iam.serviceAccountTokenCreator

โดย my-user@example.com คืออีเมลที่ใช้ในการตรวจสอบสิทธิ์กับ gcloud (gcloud auth list --format='value(account)')

ไลบรารีการตรวจสอบสิทธิ์ Fleet Engine

Fleet Engine ใช้ JWT เพื่อจำกัดการเข้าถึง Fleet Engine API ในสภาพแวดล้อมที่ไม่น่าเชื่อถือ ไลบรารีการตรวจสอบสิทธิ์ Fleet Engine มีอยู่ใน GitHub ช่วยลดความซับซ้อนในการสร้าง Fleet Engine JWT และลงนามอย่างปลอดภัย

ไลบรารีมีประโยชน์ดังต่อไปนี้

  • ลดความซับซ้อนของกระบวนการสร้างโทเค็น Fleet Engine
  • มีกลไกการรับรองโทเค็นที่นอกเหนือจากการใช้ไฟล์ข้อมูลเข้าสู่ระบบ (เช่น การแอบอ้างบัญชีบริการ)

การสร้าง JSON Web Token (JWT) สำหรับการให้สิทธิ์

เมื่อไม่ได้ใช้ไลบรารีการตรวจสอบสิทธิ์ Fleet Engine คุณจะต้องสร้าง JWT ภายในฐานของโค้ดโดยตรง คุณจึงต้องมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับ JWT และความเกี่ยวข้องกับ Fleet Engine นี่คือเหตุผลที่เราแนะนำอย่างยิ่ง ให้ใช้ประโยชน์จาก Fleet Engine Auth Library

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

ส่วนหัวของ JWT ประกอบด้วยช่องต่อไปนี้

ฟิลด์คำอธิบาย
alg อัลกอริทึมที่จะใช้ "RS256"
typ ประเภทของโทเค็น "JWT"
kid รหัสคีย์ส่วนตัวของบัญชีบริการ โดยคุณจะดูค่านี้ได้ในช่อง "private_key_id" ของไฟล์ JSON ของบัญชีบริการ ตรวจสอบว่าใช้คีย์จากบัญชีบริการที่มีระดับสิทธิ์ที่ถูกต้อง

ส่วนการอ้างสิทธิ์ JWT ประกอบด้วยช่องต่อไปนี้

ฟิลด์คำอธิบาย
iss อีเมลของบัญชีบริการ
sub อีเมลของบัญชีบริการ
aud SERVICE_NAME ของบัญชีบริการ ในกรณีนี้คือ https://fleetengine.googleapis.com/
iat การประทับเวลาเมื่อสร้างโทเค็น ระบุเป็นวินาทีที่ผ่านไปตั้งแต่ 00:00:00 น. ตามเขตเวลา UTC วันที่ 1 มกราคม 1970 รอ 10 นาทีสำหรับการบิด หากการประทับเวลาอยู่ในอดีตหรือในอนาคตมากเกินไป เซิร์ฟเวอร์อาจรายงานข้อผิดพลาด
exp การประทับเวลาที่โทเค็นหมดอายุ ระบุเป็นวินาทีที่ผ่านไปตั้งแต่ 00:00:00 น. ตามเขตเวลา UTC วันที่ 1 มกราคม 1970 คำขอจะไม่สำเร็จหากการประทับเวลานานกว่า 1 ชั่วโมงในอนาคต
authorization อาจมี "deliveryvehicleid", "trackingid", "taskid" หรือ "taskids" โดยขึ้นอยู่กับกรณีการใช้งาน

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

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

Last Mile Fleet Solution ใช้การอ้างสิทธิ์ส่วนตัว การใช้การอ้างสิทธิ์ส่วนตัวช่วยให้มั่นใจได้ว่า จะมีเพียงไคลเอ็นต์ที่ได้รับอนุญาตเท่านั้นที่เข้าถึงข้อมูลของตนเองได้ ตัวอย่างเช่น เมื่อแบ็กเอนด์ออกโทเค็นเว็บ JSON สำหรับอุปกรณ์เคลื่อนที่ของพนักงานขับรถส่ง โทเค็นดังกล่าวควรมีการอ้างสิทธิ์ deliveryvehicleid ที่มีค่ารหัสยานพาหนะที่นำส่งของผู้ขับคนดังกล่าว จากนั้นโทเค็นจะให้สิทธิ์เข้าถึงเฉพาะรหัสยานพาหนะที่นำส่งที่เฉพาะเจาะจง ไม่ใช่รหัสยานพาหนะอื่นใดก็ตามที่กำหนดเอง ทั้งนี้ขึ้นอยู่กับบทบาทผู้ขับขี่

Last Mile Fleet Solution ใช้การกล่าวอ้างส่วนตัวต่อไปนี้

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

โทเค็นดังกล่าวต้องมีการอ้างสิทธิ์ที่เหมาะสมเมื่อเรียกใช้ API จากเซิร์ฟเวอร์แบ็กเอนด์ด้วย แต่คุณใช้ค่าพิเศษของเครื่องหมายดอกจัน ("*") สำหรับการอ้างสิทธิ์ deliveryvehicleid, taskid และ trackingid ได้ เครื่องหมายดอกจัน ("*") อาจใช้ในการอ้างสิทธิ์ taskids ได้ด้วย แต่ต้องเป็นองค์ประกอบเดียวในอาร์เรย์

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

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

ตัวอย่างต่อไปนี้แสดงโทเค็นสำหรับการดำเนินการต่องานจากเซิร์ฟเวอร์แบ็กเอนด์

    {
      "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": "*"
       }
    }

ตัวอย่างต่อไปนี้แสดงโทเค็นสำหรับลูกค้าปลายทาง

    {
      "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"
       }
    }

ตัวอย่างต่อไปนี้แสดงโทเค็นสำหรับแอปคนขับ

    {
      "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"
       }
    }
  • สำหรับช่อง kid ในส่วนหัว ให้ระบุรหัสคีย์ส่วนตัวของบัญชีบริการ ค่านี้จะอยู่ในช่อง private_key_id ของไฟล์ JSON ของบัญชีบริการ
  • สำหรับช่อง iss และ sub ให้ระบุอีเมลของบัญชีบริการ คุณดูค่านี้ได้ในช่อง client_email ของไฟล์ JSON ของบัญชีบริการ
  • สำหรับช่อง aud ให้ระบุ https://SERVICE_NAME/
  • สำหรับช่อง iat ให้ระบุการประทับเวลาเมื่อสร้างโทเค็นเป็นหน่วยวินาทีที่ผ่านไปนับตั้งแต่ 00:00:00 น. ตามเขตเวลา UTC ของวันที่ 1 มกราคม 1970 ให้เวลาการเอียง 10 นาที หากการประทับเวลาอยู่ในอดีตหรือในอนาคตมากเกินไป เซิร์ฟเวอร์อาจรายงานข้อผิดพลาด
  • สำหรับช่อง exp ให้ระบุการประทับเวลาที่โทเค็นหมดอายุ เป็นวินาทีตั้งแต่ 00:00:00 น. ตามเขตเวลา UTC วันที่ 1 มกราคม 1970 ค่าที่แนะนำคือ iat + 3600

เมื่อลงชื่อโทเค็นที่จะส่งไปยังอุปกรณ์เคลื่อนที่หรือผู้ใช้ปลายทาง โปรดใช้ไฟล์ข้อมูลเข้าสู่ระบบสำหรับบทบาทไดรเวอร์การนำส่งหรือผู้บริโภค ไม่เช่นนั้น อุปกรณ์เคลื่อนที่หรือผู้ใช้ปลายทางจะสามารถเปลี่ยนแปลงหรือดูข้อมูลที่พวกเขาไม่ควรเข้าถึงได้