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

ส่วนนี้อธิบายแนวคิดของการตรวจสอบสิทธิ์และการให้สิทธิ์ที่เกี่ยวกับการผสานรวมกับ 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 สำหรับทรัพยากร

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

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

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

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

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

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

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

  4. แอปไคลเอ็นต์ขอ JWT จากแบ็กเอนด์ของลูกค้า ผู้ขออาจเป็นแอปไดรเวอร์ แอป Consumer หรือแอปตรวจสอบ

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

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

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

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

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

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

  1. สร้างโปรเจ็กต์ Google Cloud โดยใช้ Google Cloud Console
  2. เปิดใช้ 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 ที่กำหนดเอง บทบาทนี้ควรจำกัดอยู่ในสภาพแวดล้อมที่เชื่อถือได้ (แบ็กเอนด์ของลูกค้า)
ผู้ใช้ขั้นสูงสำหรับ 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 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

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