Để ngăn việc tạo khoá truy cập mới nếu đã có một khoá truy cập trong cùng một khoá truy cập
hãy sử dụng thuộc tính excludeCredentials
không bắt buộc của WebAuthn
PublicKeyCredentialCreationOptions
từ điển.
Thuộc tính excludeCredentials
là một mảng mã mô tả cho khoá công khai
đã tồn tại đối với một người dùng cụ thể. Thông tin này được cung cấp bởi
máy chủ của bên tin cậy
khi muốn ngăn việc tạo thông tin đăng nhập mới cho người dùng hiện tại trên
một trình xác thực duy nhất.
Mảng excludeCredentials
có các thuộc tính sau:
- type: Một chuỗi mô tả loại thông tin xác thực khoá công khai sẽ
tạo. Giá trị mặc định là "
public-key
". - id: Một
ArrayBuffer
khớp với thông tin xác thực khoá công khai hiện có giá trị nhận dạng (PublicKeyCredential.rawId
). Giá trị nhận dạng này được tạo trong khoảng thời gian việc tạo thực thểPublicKeyCredential
.
Ứng dụng sẽ trả về lỗi nếu người dùng cố gắng tạo một
thông tin đăng nhập mới trên trình xác thực nền tảng đã chứa một trong
được liệt kê trong tham số này. Nếu trình xác thực đã chứa
loại thông tin xác thực khoá công khai này, trình xác thực thu thập sự đồng ý của người dùng dưới
thông thường và cho người dùng thấy chỉ báo thành công khi chưa tạo thông tin đăng nhập mới. Một
Hệ thống sẽ gửi InvalidStateError
ngoại lệ, cho biết rằng người dùng đã có một
thông tin đăng nhập hợp lệ khớp với từ excludeCredentials
.
"excludeCredentials": [
{"id": "<id-1>", "type": "public-key"},
{"id": "<id-2>", "type": "public-key"}
]
Bạn có thể sử dụng JSON này để ngăn trình xác thực bằng một trong
chứng chỉ được đăng ký nhiều lần. Mỗi "<id-*>
" giá trị sẽ
được điền giá trị nhận dạng của thông tin xác thực sẽ bị loại trừ.
Tìm hiểu thêm về excludeCredentials
trong W3C
đề xuất