PublicKeyCredential: parseRequestOptionsFromJSON() 静态方法

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

parseRequestOptionsFromJSON()PublicKeyCredential 接口的静态方法,它将JSON 类型表示转换为PublicKeyCredentialRequestOptions 实例。

该方法是用于将依赖方服务器提供给 Web 应用程序的信息转换为用于请求现有凭据的便捷函数。

语法

js
PublicKeyCredential.parseRequestOptionsFromJSON(options)

参数

options

一个与PublicKeyCredentialRequestOptions 实例具有相同结构的对象,但使用base64url 编码的字符串代替缓冲区属性。

返回值

异常

EncodingError DOMException

如果 options 对象的任何部分无法转换为PublicKeyCredentialRequestOptions 实例,则会抛出此异常。

描述

用于验证(已注册)用户 的 Web 身份验证流程涉及依赖方服务器向 Web 应用程序发送找到现有凭据所需的信息,包括有关用户身份、依赖方、“挑战”以及可选的查找凭据的位置的详细信息:例如,在本地内置验证器上,或通过 USB、BLE 等在外部验证器上。Web 应用程序通过调用navigator.credentials.get() 将此信息传递给验证器以查找凭据,其中参数包含服务器提供的数据作为PublicKeyCredentialRequestOptions 实例。

规范没有定义请求凭据所需的信息发送方式。一种便捷的方法是让服务器将信息封装在PublicKeyCredentialRequestOptions 实例的JSON 类型表示 中,该表示反映其结构,但将诸如 challenge 之类的缓冲区属性编码为base64url 字符串。此对象可以序列化为JSON 字符串,发送到 Web 应用程序并反序列化,然后使用parseRequestOptionsFromJSON() 转换为PublicKeyCredentialRequestOptions 实例。

示例

在授权已注册用户时,依赖方服务器将向 Web 应用程序提供有关请求的凭据、依赖方以及挑战的信息。以下代码以options 参数 中描述的格式定义了此信息。

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",
  }

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

js
JSON.stringify(requestCredentialOptionsJSON);

Web 应用程序可以将 JSON 字符串反序列化回 requestCredentialOptionsJSON 对象(未显示)。parseRequestOptionsFromJSON() 方法用于将该对象转换为可用于 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);
  });

规范

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

浏览器兼容性

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

另请参阅