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

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

คุณสามารถกำหนดค่าความสามารถที่ให้บริการโดย Last Mile Fleet Solution ผ่าน คอนโซล Google Cloud SDK ของ Fleet Engine ต้องใช้ JSON Web Token (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 Console
  2. ในการใช้ API และบริการแดชบอร์ด ให้เปิดใช้ API การโดยสารและการนำส่งในท้องถิ่น

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

บัญชีบริการคือ บัญชีประเภทพิเศษที่แอปพลิเคชันใช้ ไม่ใช่สำหรับบุคคล โดยทั่วไปแล้ว บัญชีบริการจะใช้ในการสร้าง (Mint 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 และควรใช้ Application แทน ข้อมูลเข้าสู่ระบบเริ่มต้น ระบบจะไม่พิจารณาการอ้างสิทธิ์ JWT ที่กำหนดเอง บทบาทนี้ควรเป็น จำกัดเฉพาะสภาพแวดล้อมที่เชื่อถือได้ (แบ็กเอนด์ของลูกค้า)
ผู้ใช้ขั้นสูงสำหรับ Fleet Engine Delivery **(เลิกใช้งานแล้ว)**

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 จากรายการแบบเลื่อนลง "บทบาท" ให้เลือก Fleet Engine และมอบหมายบทบาทใดบทบาทหนึ่งให้กับบัญชีบริการ ดี เพื่อระบุบัญชีที่เชื่อมโยงกับแต่ละบทบาท เช่น ตั้งชื่อที่สื่อความหมายให้กับบัญชีบริการ

เพื่อความสะดวก หากคุณต้องการสร้าง JWT สำหรับไคลเอ็นต์ที่ไม่น่าเชื่อถือ ให้เพิ่ม บทบาทผู้สร้างโทเค็นบัญชีบริการช่วยให้ผู้ใช้สร้างโทเค็นสร้าง (Mint) ได้ ด้วยเครื่องมือบรรทัดคำสั่ง 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 Developer

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

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

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

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