Các bên trung thành (RP) có thể xác định xem một trình cung cấp khoá truy cập nào sẽ được tạo bằng cách kiểm tra AAGUID của thông tin xác thực khoá công khai được liên kết.
Những khó khăn khi quản lý khoá truy cập
Một trong những lợi ích của việc sử dụng khoá truy cập là người dùng có thể tạo nhiều khoá truy cập cho một tài khoản. Nhờ tính linh hoạt này cùng với tính mạnh mẽ của khoá truy cập, ngay cả khi người dùng bị khoá tài khoản do mất một trong các khoá truy cập, họ vẫn có thể đăng nhập vào bên đáng tin cậy bằng khoá truy cập thay thế.
Thách thức đặt ra cho những người dùng quản lý nhiều khoá truy cập trên một RP là xác định đúng khoá truy cập khi họ cần chỉnh sửa hoặc xoá một khoá truy cập cụ thể trong số những khoá truy cập khác. Một ví dụ điển hình là khi người dùng muốn xoá khoá truy cập không dùng đến. Bên bị hạn chế nên đính kèm thông tin về khoá truy cập, chẳng hạn như ngày tạo và ngày sử dụng gần đây nhất trong danh sách khoá truy cập. Điều này giúp người dùng tìm thấy một khoá truy cập cụ thể.
Bên bị hạn chế cũng có thể cho phép người dùng đặt tên khoá truy cập ngay khi họ được tạo hoặc sau này, nhưng nhiều người dùng không làm như vậy. Tốt nhất là khoá truy cập được đặt tên tự động để phản ánh các tín hiệu gửi từ ứng dụng hoặc thông tin có trong thông tin xác thực khoá công khai.
Trình duyệt cung cấp một chuỗi tác nhân người dùng mà các bên phụ thuộc có thể sử dụng để đặt khoá truy cập. Tuy nhiên, các nền tảng như Android, iOS hoặc các trình duyệt dành cho máy tính có chức năng tiện ích cho phép trình quản lý mật khẩu của bên thứ ba tạo khoá truy cập. Ngoài ra, chuỗi tác nhân người dùng không nhất thiết cho biết ai là nhà cung cấp khoá truy cập thực sự.
Với Mã nhận dạng duy nhất trên toàn cầu của Chứng thực Authenticator (AAGUID), có trong thông tin xác thực khoá công khai được trả về khi đăng ký khoá truy cập, các bên bị hạn chế có thể xác định trình cung cấp khoá truy cập và sử dụng trình cung cấp đó để người dùng dễ dàng tìm thấy khoá truy cập phù hợp.
Xác định trình cung cấp khoá truy cập bằng AAGUID
AAGUID là một số duy nhất xác định mô hình của trình xác thực (không phải thực thể cụ thể của trình xác thực). Bạn có thể tìm thấy AAGUID trong dữ liệu xác thực của thông tin xác thực khoá công khai.
![Bố cục đối tượng chứng thực minh hoạ dữ liệu của trình xác thực đi kèm (chứa dữ liệu thông tin xác thực đã được chứng thực) và tuyên bố chứng thực.](https://web.developers.google.cn/static/articles/webauthn-aaguid/image/attestation_object.jpg?authuser=5&hl=vi)
Bên bị hạn chế có thể dùng AAGUID để xác định trình cung cấp khoá truy cập. Ví dụ: Nếu người dùng tạo khoá truy cập trên một thiết bị Android bằng Trình quản lý mật khẩu của Google, thì bên bị hạn chế sẽ nhận được mã AAGUID của "ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4"
. Bên bị hạn chế có thể chú thích khoá truy cập trong danh sách khoá truy cập để cho biết rằng khoá truy cập đã được tạo trên Trình quản lý mật khẩu của Google.
![Phần cài đặt khoá truy cập trong trang cài đặt bảo mật cho thấy thông tin chi tiết về từng khoá truy cập.](https://web.developers.google.cn/static/articles/webauthn-aaguid/image/passkey_management.jpg?authuser=5&hl=vi)
Để liên kết một AAGUID với một trình cung cấp khoá truy cập, bên bị hạn chế có thể sử dụng kho lưu trữ AAGUID do cộng đồng nguồn. Bằng cách tra cứu AAGUID trên danh sách, bạn có thể tìm thấy tên trình cung cấp khoá truy cập và văn bản dữ liệu svg biểu tượng tương ứng.
Truy xuất AAGUID là một tính năng mà hầu hết các thư viện WebAuthn đều cung cấp. Ví dụ sau đây cho thấy mã đăng ký phía máy chủ bằng 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';
Kết luận
AAGUID là một chuỗi duy nhất xác định trình cung cấp khoá truy cập đã tạo khoá truy cập. Bên bị hạn chế có thể sử dụng AAGUID để giúp người dùng quản lý khoá truy cập của họ dễ dàng hơn. Kho lưu trữ AAGUID do cộng đồng cung cấp có thể được dùng để ánh xạ AAGUID với các trình cung cấp khoá truy cập.