บทนำ
บาร์โค้ดแบบหมุนจะมีลักษณะเหมือนกับบาร์โค้ดทั่วไป แต่จะมีการเปลี่ยนแปลงเป็นระยะๆ โดยปกติทุกนาที และเครื่องอ่าน/เครื่องรับได้รับการตั้งโปรแกรมให้ยอมรับเฉพาะบาร์โค้ดล่าสุด มาตรการรักษาความปลอดภัยนี้จะช่วยลดความเสี่ยงที่เกี่ยวข้องกับการจับภาพหน้าจอบาร์โค้ด โดยเฉพาะการโจรกรรมตั๋วหรือการจำหน่ายตั๋วที่ไม่ได้รับอนุญาต บาร์โค้ดแบบหมุนยังใช้เป็นทางเลือกสำรองสำหรับอุปกรณ์ที่ไม่สามารถใช้การแตะอัจฉริยะได้เนื่องจากไม่รองรับ NFC (ไม่มีฮาร์ดแวร์หรือซอฟต์แวร์ปิดอยู่)
เอกสารอ้างอิง API
ดูรายละเอียดทางเทคนิคเกี่ยวกับบาร์โค้ดแบบหมุนได้ที่ประเภท RotatingBarcode
ตัวอย่างเพย์โหลด
JSON | |
---|---|
{ "rotatingBarcode": { "type": "QR_CODE", "valuePattern": "MyRotatingBarcode-{totp_timestamp_seconds}-{totp_value_0}", "alternateText": "Ticket#: 1234567890", "totpDetails": { "algorithm": "TOTP_SHA1", "periodMillis": "3000", "parameters": [ { "key": "3132333435363738393031323334353637383930", "valueLength": "8" } ] } } } |
กลไกสำรอง
ในอุปกรณ์ของผู้ใช้ ระบบจะใช้กลไกการแลกสิทธิ์เพียงกลไกเดียวในแต่ละครั้ง ทั้งนี้ขึ้นอยู่กับวิธีกำหนดค่าบัตรและความสามารถของอุปกรณ์ ระบบจะใช้ประเภทการแลกสิทธิ์ต่อไปนี้ตามลำดับความสำคัญ
-
การแตะอัจฉริยะ: หากมีการระบุเพย์โหลดการแตะอัจฉริยะและอุปกรณ์รองรับ
NFC/HCE
- โปรดทราบว่าผู้ใช้สามารถลบล้างการตั้งค่านี้ได้โดยการคลิก "แสดงรหัส" ซึ่งจะบังคับให้แสดงบาร์โค้ดแบบหมุน/บาร์โค้ดแบบคงที่
- บาร์โค้ดแบบหมุน: หากระบุเพย์โหลดบาร์โค้ดแบบหมุน
- บาร์โค้ดแบบคงที่: หากระบุเพย์โหลดบาร์โค้ด
การระบุเพย์โหลดการแลกสิทธิ์หลายรายการช่วยให้มั่นใจได้ว่าระบบจะรองรับผู้ใช้ทุกคน แต่อาจส่งผลต่อความปลอดภัย โดยเฉพาะอย่างยิ่ง การใช้บาร์โค้ดแบบคงที่เป็นตัวสำรองสำหรับบาร์โค้ดแบบหมุนจะลบล้างประโยชน์ด้านความปลอดภัยส่วนใหญ่ของการใช้บาร์โค้ดแบบหมุน บาร์โค้ดแบบคงที่สำรองจะแสดงในมุมมองเว็บหรือในไคลเอ็นต์ที่ไม่รองรับบาร์โค้ดแบบหมุนเท่านั้น ในปัจจุบัน เราคาดว่าไคลเอ็นต์ Google Wallet ทั้งหมดจะรองรับบาร์โค้ดแบบหมุน
บันทึกโฟลว์
Google Wallet API มีขั้นตอนต่างๆ ดังนี้
- การสร้างชั้นเรียนโปรแกรมสะสมคะแนนในเวลาที่สะดวกหรือล่วงหน้า
- การส่งออบเจ็กต์ที่สมบูรณ์ใน JWT หรือบันทึกออบเจ็กต์ไว้ล่วงหน้าแล้วอ้างอิงด้วยรหัสใน JWT
- การอัปเดตออบเจ็กต์หลังจากบันทึกแล้ว
ช่อง rotatingBarcode ที่เสนอใช้ได้กับขั้นตอนเหล่านี้ทั้งหมด แต่เราขอแนะนำให้ทำดังนี้เพื่อปรับปรุงความปลอดภัย
-
เรียกใช้
object:insert
API เพื่อแทรกบัตรลงในเซิร์ฟเวอร์ Google Wallet และกำหนดค่าปุ่ม "เพิ่มลงใน Google Wallet" เพื่ออ้างอิงออบเจ็กต์ที่เฉพาะเจาะจงตามรหัสใน JWT วิธีนี้ช่วยให้มั่นใจว่า JWT ที่ได้จะไม่มีคีย์ลับของบาร์โค้ดแบบหมุน - ใช้คีย์ลับ OTP ที่มีขอบเขตเป็นบัตรผ่านใบเดียว
- คีย์จะใช้งานได้ตลอดอายุการใช้งานของบัตร เว้นแต่จะมีการอัปเดต เราคาดว่าคีย์นี้จะไม่มีการอัปเดตตามความถี่ใดๆ ในระหว่างการดําเนินการตามปกติ
แผนภาพลำดับต่อไปนี้แสดงขั้นตอนต่างๆ ระหว่างผู้เข้าร่วมต่างๆ สำหรับการผสานรวมทั่วไป