กำหนดผู้ให้บริการพาสคีย์โดยใช้ AAGUID

บุคคลที่เชื่อถือ (RP) สามารถระบุผู้ให้บริการพาสคีย์ที่สร้างพาสคีย์ได้โดยการตรวจสอบ AAGUID ของข้อมูลเข้าสู่ระบบด้วยคีย์สาธารณะที่เกี่ยวข้อง

ปัญหาเกี่ยวกับการจัดการพาสคีย์

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

ปัญหาสําหรับผู้ใช้ที่จัดการพาสคีย์หลายรายการใน RP คือ การระบุพาสคีย์ที่ถูกต้องเมื่อต้องการแก้ไขหรือลบพาสคีย์ที่ต้องการออกจากรายการอื่นๆ ตัวอย่างที่ดีคือเมื่อผู้ใช้ต้องการนำพาสคีย์ที่ไม่ได้ใช้ออก เราขอแนะนำให้ RP แนบข้อมูลเกี่ยวกับพาสคีย์ เช่น วันที่สร้างและวันที่ใช้ล่าสุดในรายการพาสคีย์ ซึ่งจะช่วยให้ผู้ใช้ค้นหาพาสคีย์ที่ต้องการได้

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

เบราว์เซอร์จะมีสตริง User Agent ที่ฝ่ายที่เชื่อถือสามารถใช้ตั้งชื่อพาสคีย์ได้ แต่แพลตฟอร์มต่างๆ เช่น Android, iOS หรือเบราว์เซอร์บนเดสก์ท็อปที่รองรับส่วนขยายจะอนุญาตให้เครื่องมือจัดการรหัสผ่านของบุคคลที่สามสร้างพาสคีย์ได้ และสตริง User Agent ไม่จำเป็นต้องระบุตัวตนของผู้ให้บริการพาสคีย์จริง

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

ระบุผู้ให้บริการพาสคีย์ด้วย AAGUID

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

เลย์เอาต์ออบเจ็กต์การรับรองที่แสดงข้อมูลโปรแกรมตรวจสอบสิทธิ์ที่รวมอยู่ด้วย (ซึ่งมีข้อมูลเข้าสู่ระบบที่ผ่านการรับรอง) และข้อความรับรอง
AAGUID จะอยู่ในข้อมูลโปรแกรมตรวจสอบสิทธิ์

RP สามารถใช้ AAGUID เพื่อระบุผู้ให้บริการพาสคีย์ได้ ตัวอย่างเช่น หากผู้ใช้สร้างพาสคีย์ในอุปกรณ์ Android โดยใช้เครื่องมือจัดการรหัสผ่านบน Google ทาง RP จะได้รับ AAGUID ของ "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4" RP สามารถกำกับเนื้อหาในพาสคีย์ในรายการพาสคีย์เพื่อระบุว่าสร้างพาสคีย์ในเครื่องมือจัดการรหัสผ่านบน Google

การตั้งค่าพาสคีย์ในหน้าการตั้งค่าความปลอดภัยจะแสดงข้อมูลโดยละเอียดเกี่ยวกับพาสคีย์แต่ละรายการ
ตัวอย่าง UI การจัดการพาสคีย์

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

การดึงข้อมูล AAGUID เป็นฟีเจอร์ที่ไลบรารี WebAuthn ส่วนใหญ่มีให้ ตัวอย่างต่อไปนี้แสดงโค้ดการลงทะเบียนฝั่งเซิร์ฟเวอร์ที่ใช้ SimpleWebAuthn

// Import a list of AAGUIDs from a JSON file
import aaguids from './aaguids.json' with { type: 'json' };

...

 // Use SimpleWebAuthn handy function to verify the registration request.
const { verified, registrationInfo } = await verifyRegistrationResponse({
  response: credential,
  expectedChallenge,
  expectedOrigin,
  expectedRPID,
  requireUserVerification: false,
});

...

const { aaguid } = registrationInfo;
const provider_name = aaguids[aaguid]?.name || 'Unknown';

บทสรุป

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