PublicKeyCredential:parseCreationOptionsFromJSON() 静态方法
parseCreationOptionsFromJSON()
是PublicKeyCredential
接口的静态方法,它根据其属性的 JSON 表示创建PublicKeyCredentialCreationOptions
对象。
该方法是一个方便函数,用于将依赖方服务器提供的凭据选项信息转换为 Web 应用程序可用于创建凭据的形式。
语法
PublicKeyCredential.parseCreationOptionsFromJSON(options)
参数
options
-
与
PublicKeyCredentialCreationOptions
结构相同的对象,但使用base64url编码的字符串来代替缓冲区属性。
返回值
异常
EncodingError
DOMException
-
如果无法将
options
对象转换为PublicKeyCredentialCreationOptions
对象,则抛出该异常。
描述
用于创建密钥对并注册用户的 Web 身份验证流程涉及依赖方服务器向 Web 应用程序发送创建凭据所需的信息,包括有关用户身份、依赖方和“挑战”的详细信息。Web 应用程序通过调用navigator.credentials.create()
并将PublicKeyCredentialCreationOptions
对象作为参数传递给身份验证器,来将这些信息传递给身份验证器以创建凭据。
规范未定义创建凭据所需信息的发送方式。一种方便的方法是,服务器将信息封装在JSON 类型表示中,该表示反映PublicKeyCredentialCreationOptions
对象的结构,但将缓冲区属性(如challenge
和user.id
)编码为base64url字符串。该对象可以序列化为JSON字符串,发送到 Web 应用程序并反序列化,然后使用parseCreationOptionsFromJSON()
将其转换为PublicKeyCredentialCreationOptions
对象。
示例
在注册新用户时,依赖方服务器会向 Web 应用程序提供有关预期凭据的信息。以下代码定义了上述options
参数中描述的信息形式(取自AuthenticatorResponse
中的“获取 AuthenticatorAttestationResponse”)。
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 应用程序。
JSON.stringify(createCredentialOptionsJSON);
Web 应用程序可以将 JSON 字符串反序列化回createCredentialOptionsJSON
对象(未显示)。parseCreationOptionsFromJSON()
方法用于将该对象转换为可在navigator.credentials.create()
中使用的形式。
// 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 的浏览器中加载。