PublicKeyCredential: parseRequestOptionsFromJSON() statische Methode

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

Die statische Methode parseRequestOptionsFromJSON() des PublicKeyCredential-Interfaces konvertiert eine JSON Typdarstellung in eine PublicKeyCredentialRequestOptions-Instanz.

Die Methode ist eine praktische Funktion, um Informationen, die von einem vertrauenswürdigen Server an eine Webanwendung bereitgestellt werden, in Anfrage zu einer vorhandenen Berechtigung umzuwandeln.

Syntax

js
PublicKeyCredential.parseRequestOptionsFromJSON(options)

Parameter

options

Ein Objekt mit derselben Struktur wie eine PublicKeyCredentialRequestOptions-Instanz, jedoch mit base64url-codierten Zeichenfolgen anstelle von Puffer-Eigenschaften.

Rückgabewert

Ausnahmen

EncodingError DOMException

Wird ausgelöst, wenn ein Teil des options-Objekts nicht in eine PublicKeyCredentialRequestOptions-Instanz umgewandelt werden kann.

Beschreibung

Der Web-Authentifizierungsprozess zur Authentifizierung eines (registrierten) Benutzers beinhaltet, dass ein vertrauenswürdiger Server der Webanwendung die Informationen sendet, die benötigt werden, um eine vorhandene Berechtigung zu finden, einschließlich Angaben zur Benutzeridentität, der vertrauenswürdigen Partei, einer „Challenge“ und optional, wo die Berechtigung zu suchen ist: beispielsweise auf einem lokalen integrierten Authentifikator oder auf einem externen über USB, BLE usw. Die Webanwendung übergibt diese Informationen an einen Authentifikator, um die Berechtigung zu finden, indem sie navigator.credentials.get() mit einem Argument aufruft, das die vom Server bereitgestellten Daten als PublicKeyCredentialRequestOptions-Instanz enthält.

Die Spezifikation definiert nicht, wie die Informationen, die für die Anforderung einer Berechtigung benötigt werden, gesendet werden. Ein praktischer Ansatz ist, dass der Server die Informationen in einer JSON Typdarstellung einer PublicKeyCredentialRequestOptions-Instanz kapselt, die deren Struktur widerspiegelt, jedoch die Puffer-Eigenschaften wie die challenge als base64url-Zeichenfolgen codiert. Dieses Objekt kann in eine JSON-Zeichenfolge serialisiert, an die Webanwendung gesendet und deserialisiert werden, und dann mithilfe von parseRequestOptionsFromJSON() in eine PublicKeyCredentialRequestOptions-Instanz umgewandelt werden.

Beispiele

Beim Autorisieren eines bereits registrierten Benutzers wird ein vertrauenswürdiger Server der Webanwendung Informationen über die angeforderten Berechtigungen, die vertrauenswürdige Partei und eine Challenge bereitstellen. Der folgende Code definiert diese Informationen in der im options-Parameter beschriebenen Form:

js
const requestCredentialOptionsJSON =  {
    challenge: new Uint8Array([139, 66, 181, 87, 7, 203, ...]),
    rpId: "acme.com",
    allowCredentials: [{
      type: "public-key",
      id: new Uint8Array([64, 66, 25, 78, 168, 226, 174, ...])
    }],
    userVerification: "required",
  }

Da dieses Objekt nur JSON-Datentypen verwendet, kann es unter Verwendung von JSON.stringify() in JSON serialisiert und an die Webanwendung gesendet werden.

js
JSON.stringify(requestCredentialOptionsJSON);

Die Webanwendung kann die JSON-Zeichenfolge zurück in ein requestCredentialOptionsJSON-Objekt deserialisieren (nicht gezeigt). Die Methode parseRequestOptionsFromJSON() wird verwendet, um dieses Objekt in die Form zu konvertieren, die in navigator.credentials.get() verwendet werden kann:

js
// Convert options to form used by get()
const publicKey = PublicKeyCredential.parseRequestOptionsFromJSON(
  requestCredentialOptionsJSON, // JSON-type representation
);

navigator.credentials
  .get({ publicKey })
  .then((returnedCredentialInfo) => {
    // Handle the returned credential information here.
  })
  .catch((err) => {
    console.error(err);
  });

Spezifikationen

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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch