AuthenticatorResponse:clientDataJSON 属性
clientDataJSON
属性是 AuthenticatorResponse
接口的一个属性,它存储一个 JSON 字符串,该字符串存储在 ArrayBuffer
中,表示传递给 navigator.credentials.create()
或 navigator.credentials.get()
的客户端数据。此属性仅在 AuthenticatorResponse
的一个子对象上访问,具体来说是 AuthenticatorAttestationResponse
或 AuthenticatorAssertionResponse
。
值
一个 ArrayBuffer
。
实例属性
将 clientDataJSON
对象从 ArrayBuffer
转换为 JavaScript 对象后,它将具有以下属性
挑战
-
依赖方服务器发送的加密挑战的 base64url 编码版本。原始值作为
CredentialsContainer.get()
或CredentialsContainer.create()
中的challenge
选项传递。 crossOrigin
可选-
布尔值。如果设置为
true
,则表示调用上下文是一个<iframe>
,并且与它的祖先框架的来源不同。 来源
-
客户端/浏览器已提供给身份验证器的依赖方的完全限定来源。我们应该期望依赖方的 ID 是此值的结尾。
tokenBinding
可选 已弃用-
一个对象,描述与依赖方通信的 令牌绑定协议 的状态。它有两个属性
-
status
:一个字符串,可以是"supported"
,表示客户端支持令牌绑定但未与依赖方协商,或者"present"
,表示已使用令牌绑定。 -
id
:一个字符串,它是用于通信的令牌绑定 ID 的 base64url 编码。
如果此属性不存在,则表示客户端不支持令牌绑定。
注意:从规范的第 3 级开始,
tokenBinding
已弃用,但该字段已保留,因此不会将其重新用于其他目的。 -
topOrigin
可选-
包含依赖方的完全限定顶级来源。仅当
crossOrigin
为true
时才设置。 类型
-
一个字符串,当检索现有凭据时为
"webauthn.get"
,当创建新凭据时为"webauthn.create"
。
示例
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 表仅在浏览器中加载