PublicKeyCredential
PublicKeyCredential
接口提供有关公钥/私钥对的信息,这是一种用于使用防钓鱼和数据泄露抗性的非对称密钥对而不是密码登录服务的凭据。它继承自Credential
,并且是Web 身份验证 API对凭据管理 API的扩展。
注意:此 API 仅限于顶级上下文。在<iframe>
元素内部使用不会有任何效果。
实例属性
PublicKeyCredential.authenticatorAttachment
只读-
一个字符串,指示 WebAuthn 实现与关联的
navigator.credentials.create()
或navigator.credentials.get()
调用完成时附加到身份验证器的机制。 PublicKeyCredential.id
只读PublicKeyCredential.rawId
只读-
一个
ArrayBuffer
,包含此PublicKeyCredential
的全局唯一标识符。此标识符可用于查找未来对navigator.credentials.get()
的调用的凭据。 PublicKeyCredential.response
只读-
一个
AuthenticatorResponse
对象的实例。如果PublicKeyCredential
是navigator.credentials.create()
调用的结果,则其类型为AuthenticatorAttestationResponse
;如果PublicKeyCredential
是navigator.credentials.get()
调用的结果,则其类型为AuthenticatorAssertionResponse
。 PublicKeyCredential.type
只读-
继承自
Credential
。对于PublicKeyCredential
实例,始终设置为public-key
。
静态方法
-
返回一个
Promise
,如果条件中介可用,则解析为true
。 PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
-
返回一个
Promise
,如果绑定到平台的身份验证器能够验证用户,则解析为true
。 PublicKeyCredential.parseCreationOptionsFromJSON()
-
在使用凭据注册用户时,用于反序列化服务器发送的凭据注册数据的便捷方法。
PublicKeyCredential.parseRequestOptionsFromJSON()
-
在对(已注册的)用户进行身份验证时,用于反序列化服务器发送的凭据请求数据的便捷方法。
实例方法
PublicKeyCredential.getClientExtensionResults()
-
如果请求了任何扩展,则此方法将返回处理这些扩展的结果。
PublicKeyCredential.toJSON()
-
在使用凭据注册用户和对已注册的用户进行身份验证时,用于创建
PublicKeyCredential
的 JSON 字符串表示形式以发送到服务器的便捷方法。
示例
创建 PublicKeyCredential 的新实例
在这里,我们使用navigator.credentials.create()
生成新的凭据。
const createCredentialOptions = {
publicKey: {
challenge: new Uint8Array([
21, 31, 105 /* 29 more random bytes generated by the server */,
]),
rp: {
name: "Example CORP",
id: "login.example.com",
},
user: {
id: new Uint8Array(16),
name: "[email protected]",
displayName: "Carina Anand",
},
pubKeyCredParams: [
{
type: "public-key",
alg: -7,
},
],
},
};
navigator.credentials
.create(createCredentialOptions)
.then((newCredentialInfo) => {
const response = newCredentialInfo.response;
const clientExtensionsResults =
newCredentialInfo.getClientExtensionResults();
})
.catch((err) => {
console.error(err);
});
获取 PublicKeyCredential 的现有实例
在这里,我们使用navigator.credentials.get()
从身份验证器获取现有的凭据。
const requestCredentialOptions = {
publicKey: {
challenge: new Uint8Array([
/* bytes sent from the server */
]),
},
};
navigator.credentials
.get(requestCredentialOptions)
.then((credentialInfoAssertion) => {
// send assertion response back to the server
// to proceed with the control of the credential
})
.catch((err) => {
console.error(err);
});
规范
规范 |
---|
Web 身份验证:访问公钥凭据的 API - 3 级 # iface-pkcredential |
浏览器兼容性
BCD 表仅在浏览器中加载
另请参阅
- 父接口
Credential