PublicKeyCredential: phương thức tĩnh parseRequestOptionsFromJSON()

Baseline 2025
Newly available

Since March 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Phương thức tĩnh parseRequestOptionsFromJSON() của giao diện PublicKeyCredential chuyển đổi JSON type representation thành một phiên bản PublicKeyCredentialRequestOptions.

Phương thức này là hàm tiện lợi để chuyển đổi thông tin được cung cấp bởi máy chủ relying party sang ứng dụng web để yêu cầu thông tin xác thực hiện có.

Cú pháp

js
PublicKeyCredential.parseRequestOptionsFromJSON(options)

Tham số

options

Một đối tượng có cùng cấu trúc với phiên bản PublicKeyCredentialRequestOptions, nhưng với các chuỗi được mã hóa base64url được dùng thay cho các thuộc tính buffer.

Giá trị trả về

Một phiên bản PublicKeyCredentialRequestOptions.

Ngoại lệ

EncodingError DOMException

Được ném ra nếu bất kỳ phần nào của đối tượng options không thể được chuyển đổi thành phiên bản PublicKeyCredentialRequestOptions.

SecurityError DOMException

Miền RP không hợp lệ.

Mô tả

Quá trình Web Authentication để xác thực người dùng (đã đăng ký) liên quan đến máy chủ relying party gửi cho ứng dụng web thông tin cần thiết để tìm thông tin xác thực hiện có, bao gồm chi tiết về danh tính người dùng, relying party, "challenge", và tùy chọn nơi tìm kiếm thông tin xác thực: ví dụ trên thiết bị xác thực được tích hợp cục bộ, hoặc trên thiết bị ngoài qua USB, BLE, v.v. Ứng dụng web truyền thông tin này cho thiết bị xác thực để tìm thông tin xác thực, bằng cách gọi navigator.credentials.get() với đối số chứa dữ liệu do máy chủ cung cấp như một phiên bản PublicKeyCredentialRequestOptions.

Đặc tả không định nghĩa cách thông tin cần để yêu cầu thông tin xác thực được gửi đi. Một cách tiếp cận thuận tiện là máy chủ đóng gói thông tin trong JSON type representation của phiên bản PublicKeyCredentialRequestOptions, phản ánh cấu trúc của nó nhưng mã hóa các thuộc tính buffer như challenge thành chuỗi base64url. Đối tượng này có thể được tuần tự hóa thành chuỗi JSON, gửi đến ứng dụng web và giải tuần tự hóa, rồi được chuyển đổi thành phiên bản PublicKeyCredentialRequestOptions bằng cách dùng parseRequestOptionsFromJSON().

Ví dụ

Khi xác thực người dùng đã đăng ký, máy chủ relying party sẽ cung cấp cho ứng dụng web thông tin về thông tin xác thực được yêu cầu, relying party, và challenge. Code bên dưới định nghĩa thông tin này theo dạng được mô tả trong tham số options ở trên:

js
const requestCredentialOptionsJSON = {
  challenge: new Uint8Array([139, 66, 181, 87, 7, 203 /* … */]),
  rpId: "acme.com",
  allowCredentials: [
    {
      type: "public-key",
      id: new Uint8Array([64, 66, 25, 78, 168, 226, 174 /* … */]),
    },
  ],
  userVerification: "required",
};

Vì đối tượng này chỉ sử dụng các kiểu dữ liệu JSON, nó có thể được tuần tự hóa thành JSON bằng JSON.stringify() và gửi đến ứng dụng web.

js
JSON.stringify(requestCredentialOptionsJSON);

Ứng dụng web có thể giải tuần tự hóa chuỗi JSON trở lại thành đối tượng requestCredentialOptionsJSON (không hiển thị). Phương thức parseRequestOptionsFromJSON() được dùng để chuyển đổi đối tượng đó sang dạng có thể được sử dụng trong navigator.credentials.get():

js
// Convert options to form used by get()
const publicKey = PublicKeyCredential.parseRequestOptionsFromJSON(
  requestCredentialOptionsJSON, // JSON-type representation
);

navigator.credentials
  .get({ publicKey })
  .then((returnedCredentialInfo) => {
    // Handle the returned credential information here.
  })
  .catch((err) => {
    console.error(err);
  });

Thông số kỹ thuật

Specification
Web Authentication: An API for accessing Public Key Credentials - Level 3
# dom-publickeycredential-parserequestoptionsfromjson

Tương thích trình duyệt

Xem thêm