AuthenticatorResponse: свойство clientDataJSON
Базовая Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2021 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Свойство clientDataJSON интерфейса AuthenticatorResponse хранит строку JSON, представляющую данные клиента, которые были переданы в navigator.credentials.create() или navigator.credentials.get(), в ArrayBuffer. К этому свойству можно получить доступ только к одному из дочерних объектов AuthenticatorResponse, а именно AuthenticatorAttestationResponse или AuthenticatorAssertionResponse.
Значение
Значение типа ArrayBuffer.
Свойства экземпляра
После преобразования объекта clientDataJSON из ArrayBuffer в объект JavaScript, он будет иметь следующие свойства:
challenge-
Кодированная в base64url версия криптографического запроса, отправленного сервером стороны, полагающейся на аутентификацию. Исходное значение передаётся в качестве параметра
challengeвCredentialsContainer.get()илиCredentialsContainer.create(). crossOriginНеобязательно-
Булево значение. Если установлено в значение
true, это означает, что вызывающий контекст — это<iframe>, который не находится в той же области, что и его родительские фреймы. origin-
Полностью квалифицированный URI origin стороны, полагающейся на аутентификацию, который был предоставлен клиентом/браузером аутентификатору. Мы должны ожидать, что идентификатор стороны, полагающейся на аутентификацию, будет суффиксом этого значения.
tokenBindingНеобязательно Устарело-
Объект, описывающий состояние протокола привязки токена для связи со стороной, полагающейся на аутентификацию. Он имеет два свойства:
-
status: Строка, которая может иметь значение"supported"(клиент поддерживает привязку токена, но не договорился с полагающейся стороной) или"present"(привязка токена была уже использована) -
id: Строка, представляющая собой кодирование в base64url идентификатора привязки токена, который использовался для связи.
Отсутствие этого свойства означает, что клиент не поддерживает привязку токена.
Примечание:
tokenBindingустарело, начиная с уровня 3 спецификации, но поле зарезервировано, чтобы избежать его повторного использования для другой цели. -
topOriginНеобязательно-
Содержит полностью квалифицированный URI origin верхнего уровня стороны, полагающейся на аутентификацию. Он устанавливается только тогда, когда
crossOriginявляетсяtrue. type-
Строка, которая может быть
"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
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
clientDataJSON |
67 | 18 | 60Поддерживает только токены USB U2F. |
54 | 13 | 70 | 9260–92Поддерживает только токены USB U2F. |
48 | 13 | 10.0 | Нет |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorResponse/clientDataJSON