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

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 parseCreationOptionsFromJSON() của giao diện PublicKeyCredential tạo một đối tượng PublicKeyCredentialCreationOptions từ biểu diễn JSON của các thuộc tính của nó.

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

Cú pháp

js
PublicKeyCredential.parseCreationOptionsFromJSON(options)

Tham số

options

Một đối tượng có cùng cấu trúc với PublicKeyCredentialCreationOptions, 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 đối tượng PublicKeyCredentialCreationOptions.

Ngoại lệ

EncodingError DOMException

Được ném ra nếu đối tượng options không thể được chuyển đổi thành đối tượng PublicKeyCredentialCreationOptions.

SecurityError DOMException

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

Mô tả

Quá trình Web Authentication để tạo cặp khóa và đăng ký người dùng liên quan đến máy chủ relying party gửi cho ứng dụng web thông tin cần thiết để tạo thông tin xác thực, bao gồm chi tiết về danh tính người dùng, relying party, và "challenge". Ứng dụng web truyền thông tin này cho thiết bị xác thực để tạo thông tin xác thực, bằng cách gọi navigator.credentials.create() với đối tượng PublicKeyCredentialCreationOptions làm đối số.

Đặc tả không định nghĩa cách thông tin cần để tạo 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 đối tượng PublicKeyCredentialCreationOptions phản ánh cấu trúc của nó nhưng mã hóa các thuộc tính buffer như challengeuser.id 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 đối tượng PublicKeyCredentialCreationOptions bằng cách dùng parseCreationOptionsFromJSON().

Ví dụ

Khi đăng ký người dùng mới, máy chủ relying party sẽ cung cấp thông tin về thông tin xác thực dự kiến cho ứng dụng web. 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 (lấy từ "getting an AuthenticatorAttestationResponse" trong AuthenticatorResponse):

js
const createCredentialOptionsJSON = {
  challenge:
    "21, 31, 105, " /* 29 more random bytes generated by the server in this string */,
  rp: {
    name: "Example CORP",
    id: "login.example.com",
  },
  user: {
    id: "16",
    name: "canand@example.com",
    displayName: "Carina Anand",
  },
  pubKeyCredParams: [
    {
      type: "public-key",
      alg: -7,
    },
  ],
};

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(createCredentialOptionsJSON);

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

js
// Convert options to form used by create()
const createCredentialOptions =
  PublicKeyCredential.parseCreationOptionsFromJSON(
    createCredentialOptionsJSON, // JSON-type representation
  );

navigator.credentials
  .create({ publicKey: createCredentialOptions })
  .then((newCredentialInfo) => {
    // Handle the new credential information here.
  })
  .catch((err) => {
    console.error(err);
  });

Thông số kỹ thuật

Thông số kỹ thuật
Web Authentication: An API for accessing Public Key Credentials - Level 3
# dom-publickeycredential-parsecreationoptionsfromjson

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

Xem thêm