PublicKeyCredential: parseRequestOptionsFromJSON() 静态方法
parseRequestOptionsFromJSON()
是PublicKeyCredential
接口的静态方法,它将JSON 类型表示转换为PublicKeyCredentialRequestOptions
实例。
该方法是用于将依赖方服务器提供给 Web 应用程序的信息转换为用于请求现有凭据的便捷函数。
语法
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
参数 中描述的格式定义了此信息。
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 应用程序。
JSON.stringify(requestCredentialOptionsJSON);
Web 应用程序可以将 JSON 字符串反序列化回 requestCredentialOptionsJSON
对象(未显示)。parseRequestOptionsFromJSON()
方法用于将该对象转换为可用于 navigator.credentials.get()
的格式。
// 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 的浏览器中加载。