PublicKeyCredential

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

PublicKeyCredential 接口提供有关公钥/私钥对的信息,这是一种用于使用防钓鱼和数据泄露抗性的非对称密钥对而不是密码登录服务的凭据。它继承自Credential,并且是Web 身份验证 API凭据管理 API的扩展。

Credential PublicKeyCredential

注意:此 API 仅限于顶级上下文。在<iframe>元素内部使用不会有任何效果。

实例属性

PublicKeyCredential.authenticatorAttachment 只读

一个字符串,指示 WebAuthn 实现与关联的navigator.credentials.create()navigator.credentials.get()调用完成时附加到身份验证器的机制。

PublicKeyCredential.id 只读

继承自Credential并被覆盖为PublicKeyCredential.rawIdbase64url 编码

PublicKeyCredential.rawId 只读

一个ArrayBuffer,包含此PublicKeyCredential的全局唯一标识符。此标识符可用于查找未来对navigator.credentials.get()的调用的凭据。

PublicKeyCredential.response 只读

一个AuthenticatorResponse对象的实例。如果PublicKeyCredentialnavigator.credentials.create()调用的结果,则其类型为AuthenticatorAttestationResponse;如果PublicKeyCredentialnavigator.credentials.get()调用的结果,则其类型为AuthenticatorAssertionResponse

PublicKeyCredential.type 只读

继承自Credential。对于PublicKeyCredential实例,始终设置为public-key

静态方法

PublicKeyCredential.isConditionalMediationAvailable()

返回一个Promise,如果条件中介可用,则解析为true

PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()

返回一个Promise,如果绑定到平台的身份验证器能够验证用户,则解析为true

PublicKeyCredential.parseCreationOptionsFromJSON()

使用凭据注册用户时,用于反序列化服务器发送的凭据注册数据的便捷方法。

PublicKeyCredential.parseRequestOptionsFromJSON()

对(已注册的)用户进行身份验证时,用于反序列化服务器发送的凭据请求数据的便捷方法。

实例方法

PublicKeyCredential.getClientExtensionResults()

如果请求了任何扩展,则此方法将返回处理这些扩展的结果。

PublicKeyCredential.toJSON()

使用凭据注册用户对已注册的用户进行身份验证时,用于创建PublicKeyCredential的 JSON 字符串表示形式以发送到服务器的便捷方法。

示例

创建 PublicKeyCredential 的新实例

在这里,我们使用navigator.credentials.create()生成新的凭据。

js
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()从身份验证器获取现有的凭据。

js
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 表仅在浏览器中加载

另请参阅