Ngăn tạo khoá truy cập mới nếu đã có khoá truy cập

Để 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