PublicKeyCredentialRequestOptions - 表示用于获取给定的 PublicKeyCredential 的选项

安全上下文
该功能仅在部分或所有支持的浏览器中的安全上下文(HTTPS)中可用。

PublicKeyCredentialRequestOptionsWeb 身份验证 API 的词典,包含传递给 navigator.credentials.get() 的选项,以获取给定的 PublicKeyCredential

属性

PublicKeyCredentialRequestOptions.challenge

由依赖方的服务器发出的 BufferSource,用作加密挑战。此值将由身份验证者签名,并且签名将作为 AuthenticatorAssertionResponse.signature 的一部分发送回去。

PublicKeyCredentialRequestOptions.timeout 可选

一个数字提示(以毫秒为单位),指示呼叫者愿意等待检索操作完成的时间。该提示可能会被浏览器覆盖。

PublicKeyCredentialRequestOptions.rpId 可选

一个 USVString,它表示依赖方的标识符(例如 "login.example.org")。如果未提供此选项,则客户端将使用当前来源的域。

PublicKeyCredentialRequestOptions.allowCredentials 可选

一个 Array,表示凭证描述符,它限制了可接受的现有凭证以供检索。

PublicKeyCredentialRequestOptions.userVerification 可选

一个字符串,用于限定用户验证应如何参与身份验证过程。

PublicKeyCredentialRequestOptions.extensions 可选

一个对象,表示多个客户端扩展输入的对象。这些扩展用于请求其他处理(例如,处理旧式 FIDO API 凭据,在身份验证器上提示特定文本等)。

方法

无。

实例

var options = {
  challenge: new Uint8Array([/* 服务器发送的字节 */]),
  rpId: "example.com" /* 仅在当前域为 foo.example.com 之类的情况下才能工作 */
  userVerification: "preferred",
  timeout: 60000,     // 等待 1 分钟
  allowCredentials: [
    {
      transports: "usb",
      type: "public-key",
      id: new Uint8Array(26) // 实际由服务器提供
    },
    {
      transports: "internal",
      type: "public-key",
      id: new Uint8Array(26) // 实际由服务器提供
    }
  ],
  extensions: {
    uvm: true,  // RP 想知道如何验证用户
    loc: false,
    txAuthSimple: "您能验证一下吗?"
  }
};

navigator.credentials.get({ "publicKey": options })
    .then(function (credentialInfoAssertion) {
    // 将断言响应发送回服务器以继续控制证书
}).catch(function (err) {
     console.error(err);
});

规范

规范 状态 备注
Web Authentication: An API for accessing Public Key Credentials Level 1
PublicKeyCredentialRequestOptions dictionary 的定义
候选推荐 初始定义。

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持67 未知60 未知 支持 未知
allowCredentials67 未知60 未知 支持 未知
challenge67 未知60 未知 支持 未知
extensions67 未知60 未知 支持 未知
rpId67 未知60 未知 支持 未知
timeout67 未知60 未知 支持 未知
userVerification67 未知60 未知 支持 未知

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持6767 未知 未知 未知 支持 未知
allowCredentials6767 未知 未知 未知 支持 未知
challenge6767 未知 未知 未知 支持 未知
extensions6767 未知 未知 未知 支持 未知
rpId6767 未知 未知 未知 支持 未知
timeout6767 未知 未知 未知 支持 未知
userVerification6767 未知 未知 未知 支持 未知

相关链接