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

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

ความท้าทายของการจัดการพาสคีย์

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

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

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

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

เมื่อใช้ตัวระบุส่วนกลางที่ไม่ซ้ำกันสำหรับเอกสารรับรองของ Authenticator (AAGUID) ซึ่งรวมอยู่ในข้อมูลเข้าสู่ระบบคีย์สาธารณะที่ส่งคืนมาในการลงทะเบียนพาสคีย์ 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 จากชุมชนเพื่อแมป AAGUID กับผู้ให้บริการพาสคีย์