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() der PublicKeyCredential-Schnittstelle konvertiert eine JSON-Type-Repräsentation in eine PublicKeyCredentialRequestOptions-Instanz.

Die Methode ist eine Komfortfunktion zum Umwandeln von Informationen, die von einem vertrauenden Server einer Webanwendung bereitgestellt werden, um ein bestehendes Anmeldedatum anzufordern.

Syntax

js
PublicKeyCredential.parseRequestOptionsFromJSON(options)

Parameter

options

Ein Objekt mit der gleichen 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 konvertiert werden kann.

SecurityError DOMException

Die RP-Domain ist nicht gültig.

Beschreibung

Der Web-Authentifizierungsprozess zum Authentifizieren eines (registrierten) Benutzers beinhaltet, dass ein vertrauender Server der Webanwendung Informationen zur Verfügung stellt, die benötigt werden, um ein bestehendes Anmeldedatum zu finden. Dazu gehören Details über die Benutzeridentität, das vertrauende Unternehmen, eine "Challenge" und optional, wo das Anmeldedatum zu suchen ist: beispielsweise auf einem lokal integrierten Authentifikator oder auf einem externen über USB, BLE und so weiter. Die Webanwendung übergibt diese Informationen an einen Authentifikator, um das Anmeldedatum 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 zum Anfordern eines Anmeldedatums versendet werden. Ein praktischer Ansatz besteht darin, dass der Server die Informationen in eine JSON-Type-Repräsentation einer PublicKeyCredentialRequestOptions-Instanz einkapselt, die deren Struktur widerspiegelt, aber Puffer-Eigenschaften wie die challenge als base64url-Zeichenfolgen codiert. Dieses Objekt kann in einen JSON-String serialisiert, an die Webanwendung gesendet und deserialisiert werden und dann mit parseRequestOptionsFromJSON() in eine PublicKeyCredentialRequestOptions-Instanz umgewandelt werden.

Beispiele

Beim Autorisieren eines bereits registrierten Benutzers liefert ein vertrauender Server der Webanwendung Informationen über die angeforderten Anmeldedaten, das vertrauende Unternehmen und eine Challenge. Der Code unten definiert diese Informationen in der im options-Parameter oben 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 mithilfe von JSON.stringify() in JSON serialisiert und an die Webanwendung gesendet werden.

js
JSON.stringify(requestCredentialOptionsJSON);

Die Webanwendung kann den JSON-String zurück in ein requestCredentialOptionsJSON-Objekt deserialisieren (nicht gezeigt). Die parseRequestOptionsFromJSON()-Methode 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