PublicKeyCredential:parseCreationOptionsFromJSON() 静态方法

安全上下文:此功能仅在安全上下文(HTTPS)中可用,并且在部分或全部支持的浏览器中可用。

parseCreationOptionsFromJSON()PublicKeyCredential接口的静态方法,它根据其属性的 JSON 表示创建PublicKeyCredentialCreationOptions对象。

该方法是一个方便函数,用于将依赖方服务器提供的凭据选项信息转换为 Web 应用程序可用于创建凭据的形式。

语法

js
PublicKeyCredential.parseCreationOptionsFromJSON(options)

参数

options

PublicKeyCredentialCreationOptions结构相同的对象,但使用base64url编码的字符串来代替缓冲区属性。

返回值

异常

EncodingError DOMException

如果无法将options对象转换为PublicKeyCredentialCreationOptions对象,则抛出该异常。

描述

用于创建密钥对并注册用户的 Web 身份验证流程涉及依赖方服务器向 Web 应用程序发送创建凭据所需的信息,包括有关用户身份、依赖方和“挑战”的详细信息。Web 应用程序通过调用navigator.credentials.create()并将PublicKeyCredentialCreationOptions对象作为参数传递给身份验证器,来将这些信息传递给身份验证器以创建凭据。

规范未定义创建凭据所需信息的发送方式。一种方便的方法是,服务器将信息封装在JSON 类型表示中,该表示反映PublicKeyCredentialCreationOptions对象的结构,但将缓冲区属性(如challengeuser.id)编码为base64url字符串。该对象可以序列化为JSON字符串,发送到 Web 应用程序并反序列化,然后使用parseCreationOptionsFromJSON()将其转换为PublicKeyCredentialCreationOptions对象。

示例

在注册新用户时,依赖方服务器会向 Web 应用程序提供有关预期凭据的信息。以下代码定义了上述options参数中描述的信息形式(取自AuthenticatorResponse中的“获取 AuthenticatorAttestationResponse”)。

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: "[email protected]",
    displayName: "Carina Anand",
  },
  pubKeyCredParams: [
    {
      type: "public-key",
      alg: -7,
    },
  ],
};

由于该对象仅使用 JSON 数据类型,因此可以使用JSON.stringify()将其序列化为 JSON 并发送到 Web 应用程序。

js
JSON.stringify(createCredentialOptionsJSON);

Web 应用程序可以将 JSON 字符串反序列化回createCredentialOptionsJSON对象(未显示)。parseCreationOptionsFromJSON()方法用于将该对象转换为可在navigator.credentials.create()中使用的形式。

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

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

规范

规范
Web 身份验证:访问公钥凭据的 API - 第 3 级
# dom-publickeycredential-parsecreationoptionsfromjson

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅