PublicKeyCredential:parseRequestOptionsFromJSON() 静态方法
PublicKeyCredential 接口的 parseRequestOptionsFromJSON() 静态方法将 JSON 类型表示 转换为 PublicKeyCredentialRequestOptions 实例。
此方法是一个便捷函数,用于转换由依赖方服务器提供给 Web 应用的信息,以便请求现有的凭证。
语法
PublicKeyCredential.parseRequestOptionsFromJSON(options)
参数
options-
一个结构与
PublicKeyCredentialRequestOptions实例相同的对象,但其中 buffer 属性使用了 base64url 编码的字符串。
返回值
异常
EncodingErrorDOMException-
如果
options对象中的任何部分无法转换为PublicKeyCredentialRequestOptions实例,则会抛出此异常。 SecurityErrorDOMException-
RP 域无效。
描述
Web 身份验证过程中,用于 验证(已注册)用户 的过程涉及一个依赖方服务器向 Web 应用发送查找现有凭证所需的信息,包括用户身份、依赖方、一个 "challenge"(挑战)的详细信息,以及可选的查找凭证的位置:例如,在本地内置的身份验证器上,或通过 USB、BLE 等连接的外部身份验证器上。Web 应用通过调用 navigator.credentials.get() 并传入一个包含服务器提供数据的 PublicKeyCredentialRequestOptions 实例作为参数,将此信息传递给身份验证器以查找凭证。
规范并未定义请求凭证所需的信息是如何发送的。一种便捷的方法是让服务器将信息封装在 PublicKeyCredentialRequestOptions 实例的 JSON 类型表示 中,该表示与其结构相匹配,但将 challenge 等 buffer 属性编码为 base64url 字符串。然后,此对象可以被序列化为 JSON 字符串,发送到 Web 应用并反序列化,然后使用 parseRequestOptionsFromJSON() 转换为 PublicKeyCredentialRequestOptions 实例。
示例
在授权一个已注册用户时,依赖方服务器将向 Web 应用提供有关请求的凭证、依赖方和 challenge 的信息。下面的代码按照 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 Authentication:访问公钥凭证的 API - 第 3 级 # dom-publickeycredential-parserequestoptionsfromjson |
浏览器兼容性
加载中…