AuthenticatorResponse:clientDataJSON 属性

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

clientDataJSON 属性是 AuthenticatorResponse 接口的一个属性,它存储一个 JSON 字符串,该字符串存储在 ArrayBuffer 中,表示传递给 navigator.credentials.create()navigator.credentials.get() 的客户端数据。此属性仅在 AuthenticatorResponse 的一个子对象上访问,具体来说是 AuthenticatorAttestationResponseAuthenticatorAssertionResponse

一个 ArrayBuffer

实例属性

clientDataJSON 对象从 ArrayBuffer 转换为 JavaScript 对象后,它将具有以下属性

挑战

依赖方服务器发送的加密挑战的 base64url 编码版本。原始值作为 CredentialsContainer.get()CredentialsContainer.create() 中的 challenge 选项传递。

crossOrigin 可选

布尔值。如果设置为 true,则表示调用上下文是一个 <iframe>,并且与它的祖先框架的来源不同。

来源

客户端/浏览器已提供给身份验证器的依赖方的完全限定来源。我们应该期望依赖方的 ID 是此值的结尾。

tokenBinding 可选 已弃用

一个对象,描述与依赖方通信的 令牌绑定协议 的状态。它有两个属性

  • status:一个字符串,可以是 "supported",表示客户端支持令牌绑定但未与依赖方协商,或者 "present",表示已使用令牌绑定。
  • id:一个字符串,它是用于通信的令牌绑定 ID 的 base64url 编码。

如果此属性不存在,则表示客户端不支持令牌绑定。

注意:从规范的第 3 级开始,tokenBinding 已弃用,但该字段已保留,因此不会将其重新用于其他目的。

topOrigin 可选

包含依赖方的完全限定顶级来源。仅当 crossOrigintrue 时才设置。

类型

一个字符串,当检索现有凭据时为 "webauthn.get",当创建新凭据时为 "webauthn.create"

示例

js
function arrayBufferToStr(buf) {
  return String.fromCharCode.apply(null, new Uint8Array(buf));
}

// pk is a PublicKeyCredential that is the result of a create() or get() Promise
const clientDataStr = arrayBufferToStr(pk.response.clientDataJSON);
const clientDataObj = JSON.parse(clientDataStr);

console.log(clientDataObj.type); // "webauthn.create" or "webauthn.get"
console.log(clientDataObj.challenge); // base64 encoded String containing the original challenge
console.log(clientDataObj.origin); // the window.origin

规范

规范
Web 身份验证:访问公钥凭据的 API - 第 3 级
# dom-authenticatorresponse-clientdatajson

浏览器兼容性

BCD 表仅在浏览器中加载