ส่วนนี้อธิบายแนวคิดของการตรวจสอบสิทธิ์และการให้สิทธิ์ที่เกี่ยวกับการผสานรวมกับ Fleet Engine
คุณกำหนดค่าความสามารถที่ให้บริการโดย Last Mile Fleet Solution ผ่าน Google Cloud Console ได้ Fleet Engine SDK กำหนดให้ใช้ JSON Web Token (JWT) ที่ลงนามโดยบัญชีบริการที่เหมาะสม
ภาพรวม
แบ็กเอนด์ของลูกค้าที่มีการตรวจสอบสิทธิ์และการให้สิทธิ์กับ Fleet Engine ควรใช้กลไกข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันมาตรฐาน
นอกจากนี้ Fleet Engine ยังได้รับการโทรที่มาจากสภาพแวดล้อมที่มีความน่าเชื่อถือต่ำ เช่น สมาร์ทโฟนและเบราว์เซอร์ต่างๆ อีกด้วย แบ็กเอนด์ของลูกค้าจะสร้าง JSON Web Token (JWT) ที่ลงนามแล้วพร้อมด้วยการอ้างสิทธิ์เพิ่มเติมเฉพาะสำหรับ Fleet Engine ซึ่งสามารถออกให้กับสภาพแวดล้อมที่ไม่น่าเชื่อถือ เช่น โทรศัพท์มือถือ เพื่อป้องกันคีย์ลับของบัญชีบริการที่เหมาะสำหรับสภาพแวดล้อมที่เชื่อถือได้เท่านั้น
หลักการออกแบบการตรวจสอบสิทธิ์
ขั้นตอนการตรวจสอบสิทธิ์ของ Fleet Engine จะใช้หลักการออกแบบดังต่อไปนี้
บทบาท IAM จะกำหนดชุดสิทธิ์ในทรัพยากรที่ได้รับอนุญาตสำหรับผู้ใช้หลัก ตัวอย่างเช่น บทบาทผู้ดูแลระบบได้รับอนุญาตให้ทำทุกอย่างด้วยข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน ในขณะที่บทบาทไดรเวอร์ที่ไม่น่าเชื่อถือ* จะได้รับอนุญาตเฉพาะการอัปเดตตำแหน่งยานพาหนะและจำกัดให้ใช้ JWT เพื่อการตรวจสอบสิทธิ์และการให้สิทธิ์เท่านั้น
สำหรับสภาพแวดล้อมที่ไม่น่าเชื่อถือ JWT อ้างสิทธิ์เพิ่มเติมจะจำกัดเอนทิตีที่ผู้โทรอาจดำเนินการอยู่ ซึ่งอาจเป็นงานที่เฉพาะเจาะจงหรือยานพาหนะส่งของก็ได้
โค้ดที่ทำงานในสภาพแวดล้อมที่มีความน่าเชื่อถือต่ำจะต้องเรียกใช้โค้ดที่ทำงานในสภาพแวดล้อมที่เชื่อถือได้ก่อนเพื่อออก JWT
Fleet Engine จะตรวจสอบความปลอดภัยต่อไปนี้ในการเรียก API สำหรับทรัพยากร
ผู้ใช้หลักที่เรียกใช้มีสิทธิ์ที่เหมาะสม (ผ่านการมอบหมายบทบาท) สำหรับการดำเนินการกับทรัพยากร
สำหรับบทบาทที่ไม่ใช่ผู้ดูแลระบบ การอ้างสิทธิ์ JWT ที่ส่งผ่านในคำขอจะให้สิทธิ์ที่จำเป็นสำหรับทรัพยากร
ขั้นตอนการตรวจสอบสิทธิ์
แผนภาพลำดับต่อไปนี้จะแสดงรายละเอียดของขั้นตอนการตรวจสอบสิทธิ์
ผู้ดูแลระบบกลุ่มรถยนต์เป็นผู้สร้างบัญชีบริการ
ผู้ดูแลระบบกลุ่มรถยนต์จะกำหนดบทบาท IAM ที่เจาะจงให้กับบัญชีบริการ
ผู้ดูแลระบบกลุ่มรถยนต์จะกำหนดค่าแบ็กเอนด์ด้วยบัญชีบริการและข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน
แอปไคลเอ็นต์ขอ JWT จากแบ็กเอนด์ของลูกค้า ผู้ขออาจเป็นแอปไดรเวอร์ แอป Consumer หรือแอปตรวจสอบ
แบ็กเอนด์ของลูกค้าจะลงชื่อและออก JWT สำหรับบัญชีบริการที่เกี่ยวข้อง แอปไคลเอ็นต์ได้รับ JWT
แอปไคลเอ็นต์ใช้ JWT เพื่อเชื่อมต่อกับ Fleet Engine เพื่ออ่านหรือแก้ไขข้อมูล ทั้งนี้ขึ้นอยู่กับบทบาท IAM ที่ได้รับมอบหมายในขั้นตอนการตั้งค่า
ตั้งค่าโปรเจ็กต์ที่อยู่ในระบบคลาวด์
หากต้องการตั้งค่าโปรเจ็กต์ระบบคลาวด์ ให้สร้างโปรเจ็กต์ก่อนแล้วจึงสร้างบัญชีบริการ
วิธีสร้างโปรเจ็กต์ Google Cloud
- สร้างโปรเจ็กต์ Google Cloud โดยใช้ Google Cloud Console
- เปิดใช้ API และแดชบอร์ดบริการเพื่อเปิดใช้ Local Rides and Deliveries API
บัญชีบริการและบทบาท IAM
บัญชีบริการเป็นบัญชีชนิดพิเศษที่แอปพลิเคชันใช้ไม่ใช่บัญชีบุคคล โดยปกติแล้ว บัญชีบริการจะใช้เพื่อสร้าง JWT ที่ให้สิทธิ์ชุดต่างๆ โดยขึ้นอยู่กับบทบาท หากต้องการลดโอกาสของการละเมิด คุณสามารถสร้างบัญชีบริการได้หลายบัญชี โดยแต่ละบัญชีจะมีชุดบทบาทขั้นต่ำที่จำเป็น ()
โซลูชันของ Last Mile Fleet ใช้บทบาทต่อไปนี้
บทบาท | คำอธิบาย |
---|---|
ผู้ใช้ไดรเวอร์ที่เชื่อถือได้ของ 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 ที่กำหนดเอง บทบาทนี้ควรจำกัดอยู่ในสภาพแวดล้อมที่เชื่อถือได้ (แบ็กเอนด์ของลูกค้า) |
roles/fleetengine.deliverySuperUser |
ให้สิทธิ์แก่ API ของยานพาหนะนำส่งและงานทั้งหมด โดยทั่วไปจะใช้โทเค็นที่สร้างโดยบัญชีบริการที่มีบทบาทนี้จากเซิร์ฟเวอร์แบ็กเอนด์ของคุณ |
ผู้อ่าน Fleet Engine Delivery Fleet
roles/fleetengine.deliveryFleetReader |
ให้สิทธิ์ในการอ่านยานพาหนะและงานที่ส่ง รวมถึงค้นหางานโดยใช้รหัสติดตาม โดยทั่วไปโทเค็นที่สร้างโดยบัญชีบริการที่มีบทบาทนี้จะใช้จากเว็บเบราว์เซอร์ของผู้ให้บริการกลุ่มการจัดส่ง |
องค์กรที่มีพนักงานขับรถส่งอาหารด้วยอุปกรณ์ที่จัดการโดยฝ่ายไอทีขององค์กรสามารถใช้ประโยชน์จากความยืดหยุ่นที่ได้รับจากบทบาทผู้ใช้ไดรเวอร์ที่เชื่อถือได้ของ Fleet Engine และเลือกที่จะผสานรวมการโต้ตอบของ Fleet Engine บางส่วนหรือทั้งหมดในแอปบนอุปกรณ์เคลื่อนที่
องค์กรที่รองรับนโยบาย Bring Your Own Device ควรเลือกใช้ความปลอดภัยของบทบาทผู้ใช้ที่เป็นคนขับที่ไม่น่าเชื่อถือของ Fleet Engine และอาศัยเฉพาะแอปบนอุปกรณ์เคลื่อนที่ในการส่งการอัปเดตตำแหน่งของรถไปยัง Fleet Engine การโต้ตอบอื่นๆ ทั้งหมดควรมาจากเซิร์ฟเวอร์แบ็กเอนด์ของลูกค้า
Driver และ Consumer SDK สร้างขึ้นตามบทบาทมาตรฐานเหล่านี้ อย่างไรก็ตาม คุณจะสร้างบทบาทที่กำหนดเองที่อนุญาตให้รวมชุดสิทธิ์ที่กำหนดเองได้ SDK ไดรเวอร์และผู้บริโภคจะแสดงข้อความแสดงข้อผิดพลาดเมื่อไม่มีสิทธิ์ที่จำเป็น ด้วยเหตุนี้ เราขอแนะนำอย่างยิ่งให้ใช้ชุดบทบาทมาตรฐานที่แสดงด้านบนแทนบทบาทที่กำหนดเอง
การสร้างบัญชีบริการ
คุณสร้างบัญชีบริการได้โดยใช้แท็บ IAM & Admin > Service Accounts
ใน Google Cloud Console จากรายการแบบเลื่อนลงของบทบาท ให้เลือก Fleet 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 เพื่อจำกัดการเข้าถึง API ของ Fleet Engine ในสภาพแวดล้อมที่ไม่น่าเชื่อถือ ไลบรารีการตรวจสอบสิทธิ์ Fleet Engine มีให้ใช้ใน GitHub ทำให้การสร้าง Fleet Engine JWT ง่ายขึ้นและเซ็นชื่ออย่างปลอดภัย
ไลบรารีมีประโยชน์ดังต่อไปนี้
- ลดความซับซ้อนของกระบวนการสร้างโทเค็น Fleet Engine
- มีกลไกการรับรองโทเค็นที่นอกเหนือจากการใช้ไฟล์ข้อมูลเข้าสู่ระบบ (เช่น การแอบอ้างบัญชีบริการ)
การสร้าง JSON Web Token (JWT) สำหรับการให้สิทธิ์
เมื่อไม่ได้ใช้ไลบรารีการตรวจสอบสิทธิ์ Fleet Engine คุณจำเป็นต้องสร้าง JWT ภายในโค้ดเบสโดยตรง คุณจึงต้องมีความเข้าใจอย่างลึกซึ้ง เกี่ยวกับ JWT และความเกี่ยวข้องกับ Fleet Engine นี่จึงเป็นเหตุผลที่เราขอแนะนำอย่างยิ่งให้ใช้ประโยชน์จากไลบรารีการตรวจสอบสิทธิ์ Fleet Engine
ใน Fleet Engine JWT มีการตรวจสอบสิทธิ์เป็นระยะเวลาสั้นๆ และช่วยให้มั่นใจว่าอุปกรณ์จะสามารถปรับเปลี่ยนยานพาหนะหรืองานที่ได้รับอนุญาตเท่านั้น JWT มีส่วนหัวและส่วนการอ้างสิทธิ์ ส่วนหัวประกอบด้วยข้อมูล เช่น คีย์ส่วนตัวที่จะใช้ (ซึ่งได้มาจากบัญชีบริการ) และอัลกอริทึมการเข้ารหัส โดยส่วนการอ้างสิทธิ์จะมีข้อมูลต่างๆ เช่น เวลาที่สร้างโทเค็น, Time to Live ของโทเค็น, บริการที่โทเค็นกำลังอ้างสิทธิ์การเข้าถึง และข้อมูลการให้สิทธิ์อื่นๆ เพื่อกำหนดขอบเขตการเข้าถึง เช่น รหัสยานพาหนะที่นำส่งส่วนหัว 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" หรือ "taskid" ขึ้นอยู่กับกรณีการใช้งาน |
การสร้างโทเค็น JWT หมายถึงการลงชื่อโทเค็น ดูวิธีการและตัวอย่างโค้ดสำหรับการสร้างและการลงนาม JWT ได้ที่การให้สิทธิ์บัญชีบริการโดยไม่ใช้ OAuth จากนั้นคุณจะแนบโทเค็นที่สร้าง (Mint) กับการเรียกใช้ gRPC หรือวิธีการอื่นๆ ที่ใช้ในการเข้าถึง Fleet Engine ได้
การเรียกร้องสิทธิ์จาก JWT
โซลูชันของ Last Mile Fleet ใช้การอ้างสิทธิ์ส่วนตัว การใช้การอ้างสิทธิ์ส่วนตัวจะทำให้มั่นใจว่า
มีเพียงไคลเอ็นต์ที่ได้รับอนุญาตเท่านั้นที่เข้าถึงข้อมูลของตนเองได้ ตัวอย่างเช่น เมื่อแบ็กเอนด์ออกโทเค็นเว็บ JSON สำหรับอุปกรณ์เคลื่อนที่ของไดรเวอร์การนำส่ง โทเค็นดังกล่าวควรมีการอ้างสิทธิ์ deliveryvehicleid
ที่มีค่าของรหัสยานพาหนะที่นำส่งของผู้ขับรายนั้น จากนั้นโทเค็นจะเปิดใช้การเข้าถึงสำหรับรหัสยานพาหนะที่นำส่งที่เฉพาะเจาะจงเท่านั้น โดยจะเข้าถึงรหัสยานพาหนะที่กำหนดเองอื่นๆ ไม่ได้ ทั้งนี้ขึ้นอยู่กับบทบาทของคนขับ
โซลูชันของ Last Mile Fleet ใช้การกล่าวอ้างส่วนตัวดังต่อไปนี้
deliveryvehicleid
- ใช้เมื่อเรียกใช้ API สำหรับยานพาหนะที่นำส่งแต่ละครั้งtaskid
- ใช้เมื่อเรียกใช้ API ต่องานtaskids
- ใช้เมื่อโทรหาBatchCreateTasksAPI
การอ้างสิทธิ์นี้ต้องอยู่ในรูปแบบอาร์เรย์ และอาร์เรย์ควรมีรหัสงานทั้งหมดที่จำเป็นต่อการดำเนินการตามคำขอ ไม่รวมการอ้างสิทธิ์delivervehicleid
,trackingid
หรือtaskid
trackingid
- ใช้เมื่อโทรหาGetTaskTrackingInfoAPI
การอ้างสิทธิ์ต้องตรงกับรหัสติดตามในคำขอ อย่าใส่การอ้างสิทธิ์delivervehicleid
,taskid
หรือtaskids
นอกจากนี้ โทเค็นต้องมีการอ้างสิทธิ์ที่เหมาะสมด้วยเมื่อคุณเรียกใช้ API จากเซิร์ฟเวอร์แบ็กเอนด์ของคุณ แต่คุณสามารถใช้ค่าพิเศษของเครื่องหมายดอกจัน ("*") สำหรับการอ้างสิทธิ์ deliveryvehicleid
, taskid
และ trackingid
เครื่องหมายดอกจัน ("*") อาจใช้ในการอ้างสิทธิ์ taskids
ได้ด้วย แต่ต้องเป็นองค์ประกอบเดียวในอาร์เรย์
หากต้องการสร้างและลงนาม JSON โดยตรงในฐานะผู้ถือโทเค็น แทนการใช้โทเค็นเพื่อการเข้าถึง OAuth 2.0 โปรดอ่านวิธีการสำหรับการให้สิทธิ์บัญชีบริการโดยไม่ใช้ OAuth ในเอกสารของนักพัฒนาซอฟต์แวร์ Identity
กลไกการแนบโทเค็นกับการเรียกใช้ gRPC จะขึ้นอยู่กับภาษาและเฟรมเวิร์กที่ใช้ในการเรียกใช้ กลไกการระบุโทเค็นไปยังการเรียกใช้ HTTP คือการรวมส่วนหัว Authorization กับโทเค็นสำหรับผู้ถือ ซึ่งมีค่าเป็นโทเค็น ดังที่ระบุไว้ในหมายเหตุการให้สิทธิ์สำหรับการติดตามการจัดส่งหรือกรณีการใช้งานประสิทธิภาพของ Fleet
ตัวอย่างต่อไปนี้แสดงโทเค็นสำหรับการดำเนินการต่องานจากเซิร์ฟเวอร์แบ็กเอนด์ของคุณ
{
"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
เมื่อลงนามโทเค็นที่จะส่งไปยังอุปกรณ์เคลื่อนที่หรือผู้ใช้ปลายทาง โปรดตรวจสอบว่าได้ใช้ไฟล์ข้อมูลเข้าสู่ระบบสำหรับบทบาทไดรเวอร์การนำส่งหรือผู้บริโภค ไม่เช่นนั้นอุปกรณ์เคลื่อนที่หรือผู้ใช้ปลายทางจะแก้ไขหรือดูข้อมูลที่ตนไม่มีสิทธิ์เข้าถึงได้