AuthenticatorResponse: clientDataJSON-Eigenschaft

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die clientDataJSON-Eigenschaft des AuthenticatorResponse-Interfaces speichert einen JSON-String in einem ArrayBuffer, der die Kundendaten darstellt, die an navigator.credentials.create() oder navigator.credentials.get() übergeben wurden. Diese Eigenschaft wird nur auf einem der Kindobjekte von AuthenticatorResponse zugegriffen, speziell AuthenticatorAttestationResponse oder AuthenticatorAssertionResponse.

Wert

Instanzeigenschaften

Nachdem das clientDataJSON-Objekt von einem ArrayBuffer in ein JavaScript-Objekt umgewandelt wurde, wird es folgende Eigenschaften haben:

challenge

Die base64url-kodierte Version der kryptografischen Herausforderung, die vom Server der vertrauenden Partei gesendet wurde. Der ursprüngliche Wert wird als challenge-Option in CredentialsContainer.get() oder CredentialsContainer.create() übergeben.

crossOrigin Optional

Ein boolescher Wert. Wenn auf true gesetzt, bedeutet es, dass der aufrufende Kontext ein <iframe> ist, das nicht dieselbe Herkunft wie seine Vorfahren-Frames hat.

origin

Die vollständig qualifizierte Herkunft der vertrauenden Partei, die vom Client/Browser an den Authenticator übergeben wurde. Wir sollten erwarten, dass die ID der vertrauenden Partei ein Suffix dieses Werts ist.

tokenBinding Optional Veraltet

Ein Objekt, das den Status des Token-Bindungsprotokolls für die Kommunikation mit der vertrauenden Partei beschreibt. Es hat zwei Eigenschaften:

  • status: Ein String, der entweder "supported" ist, was anzeigt, dass der Client Token-Bindung unterstützt, aber keine Aushandlung mit der vertrauenden Partei stattfand, oder "present", wenn Token-Bindung bereits verwendet wurde.
  • id: Ein String, der die base64url-Kodierung der Token-Bindungs-ID ist, die für die Kommunikation verwendet wurde.

Fehlt diese Eigenschaft, so würde dies anzeigen, dass der Client keine Token-Bindung unterstützt.

Note: tokenBinding ist seit Level 3 der Spezifikation veraltet, aber das Feld ist reserviert, damit es nicht für einen anderen Zweck wiederverwendet wird.

topOrigin Optional

Beinhaltet die vollständig qualifizierte Top-Level-Herkunft der vertrauenden Partei. Es wird nur gesetzt, wenn crossOrigin true ist.

type

Ein String, der entweder "webauthn.get" ist, wenn ein bestehender Berechtigungsnachweis abgerufen wird, oder "webauthn.create", wenn ein neuer Berechtigungsnachweis erstellt wird.

Beispiele

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

Spezifikationen

Specification
Web Authentication: An API for accessing Public Key Credentials - Level 3
# dom-authenticatorresponse-clientdatajson

Browser-Kompatibilität

BCD tables only load in the browser