PublicKeyCredentialRequestOptions

Baseline 广泛可用 *

此功能已成熟,并可在多种设备和浏览器版本上使用。自 2019 年 9 月以来,它已在各种浏览器中可用。

* 此特性的某些部分可能存在不同级别的支持。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

PublicKeyCredentialRequestOptions 字典表示传递给 CredentialsContainer.get() 的 `publicKey` 选项的值的对象。

它用于请求由支持 Web Authentication API身份验证器 提供的 PublicKeyCredential

实例属性

allowCredentials 可选

一个用于限制可接受凭据列表的对象数组。空数组表示任何凭据均可接受。

数组中的每个对象将包含以下属性

id

一个 ArrayBufferTypedArrayDataView,表示要检索的公钥凭据的 ID。此值与成功的 `get()` 调用返回的 PublicKeyCredential 对象的 rawId 属性相对应。

transports 可选

一个字符串数组,提供有关客户端可以用来与要检索的公钥凭据的相关身份验证器通信的方法的提示。可能的传输方式有:"ble""hybrid""internal""nfc""usb"

注意:此值与原始创建凭据的 `create()` 调用返回的 PublicKeyCredential 对象的 PublicKeyCredential.response.getTransports() 方法的返回值相对应。此时,应用程序应将其存储以备后用。

type

一个字符串,定义了要检索的公钥凭据的类型。目前只能取一个值 "public-key",但未来可能会添加更多值。此值与成功的 `get()` 调用返回的 PublicKeyCredential 对象的 type 属性相对应。

此值默认为空数组。

challenge

一个 ArrayBufferTypedArrayDataView,源自信赖方服务器,并用作 加密挑战。此值将被身份验证器签名,签名将作为 AuthenticatorAssertionResponse.signature 的一部分(可在成功的 `get()` 调用返回的 PublicKeyCredential 对象的 response 属性中找到)。

extensions 可选

一个对象,包含表示任何请求扩展的输入值的属性。这些扩展用于在身份验证过程中对客户端或身份验证器进行特定的附加处理。示例包括处理旧的 FIDO API 凭据以及评估与凭据关联的伪随机函数 (PRF) 的输出。

扩展是可选的,不同的浏览器可能识别不同的扩展。客户端始终可以忽略扩展的处理:如果浏览器不识别给定的扩展,它将仅忽略它。有关使用扩展以及哪些扩展受哪些浏览器支持的信息,请参阅 Web Authentication 扩展

hints 可选 实验性

一个字符串数组,提供有关浏览器应为用户提供何种 UI 以便使用现有公钥凭据进行身份验证的提示。

字符串可以是以下任意一种

"security-key"

UI 应建议从单独的物理安全密钥(如 YubiKey)请求凭据。

"client-device"

UI 应建议从用户正在使用的 RP 客户端所在的同一设备上可用的身份验证器请求凭据。

"hybrid"

UI 应建议从通用身份验证器(如基于智能手机的身份验证器应用程序)请求凭据。这有利于使用跨设备处理身份验证的方法,例如结合使用笔记本电脑和智能手机。

当数组中包含多个字符串时,它们的顺序表示优先顺序,从高到低。支持并尊重这些提示的浏览器应使用它们理解的第一个提示。

指定的 `hints` 可能与 transports 选项中提供的提示相矛盾。当提供的 `hints` 与此选项相矛盾时,`hints` 具有优先权。在特定情况下,例如当提示的身份验证器类型在用户的设备上不可用时,浏览器也可能忽略 `hints`。

有关一些特定的代码和 UI 示例,请参阅 Chrome 中 WebAuthn 的 hints、Related Origin Requests 和 JSON 序列化的介绍

rpId 可选

一个字符串,指定信赖方的标识符(例如 "login.example.org")。出于安全目的

  • 调用方 Web 应用验证 `rpId` 是否与信赖方的 origin 匹配。
  • 身份验证器验证 `rpId` 是否与身份验证流程中使用的凭据的 `rpId` 匹配。

此值默认为当前 origin 的域。

timeout 可选

一个以毫秒为单位的数值提示,指示信赖方愿意等待检索操作完成的时间。此提示可能会被浏览器覆盖。

userVerification 可选

一个字符串,指定信赖方对身份验证过程的用户验证要求。此验证由身份验证器发起,它将要求用户提供一个可用的因素(例如 PIN 或某种生物识别输入)。

该值可以是以下之一

"required"

信赖方要求进行用户验证,如果未发生则操作将失败。

"preferred"

信赖方倾向于在可能的情况下进行用户验证,但如果未发生则操作不会失败。

"discouraged"

信赖方不希望进行用户验证,以使用户交互尽可能顺畅。

此值默认为 "preferred"

规范

规范
Web Authentication:访问公钥凭证的 API - 第 3 级
# dictdef-publickeycredentialrequestoptions

浏览器兼容性