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

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

ความท้าทายในการจัดการพาสคีย์

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

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

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

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

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

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

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

เลย์เอาต์ออบเจ็กต์เอกสารรับรองที่แสดงข้อมูล Authenticator ที่รวมอยู่ (มีข้อมูลเข้าสู่ระบบที่รับรอง) และข้อความเอกสารรับรอง
ดู AAGUID ได้ในข้อมูล Authenticator

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 กับผู้ให้บริการพาสคีย์