PublicKeyCredential: parseCreationOptionsFromJSON() statische Methode
Baseline 2025>
Neu verfügbar
Seit März 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die statische Methode parseCreationOptionsFromJSON() der PublicKeyCredential-Schnittstelle erstellt ein PublicKeyCredentialCreationOptions-Objekt aus einer JSON-Darstellung seiner Eigenschaften.
Die Methode ist eine praktische Funktion zum Konvertieren von Anmeldeinformationsoptionen, die von einem vertrauenden Server bereitgestellt werden, in eine Form, die eine Web-App verwenden kann, um Anmeldedaten zu erstellen.
Syntax
PublicKeyCredential.parseCreationOptionsFromJSON(options)
Parameter
options-
Ein Objekt mit derselben Struktur wie ein
PublicKeyCredentialCreationOptions, jedoch mit base64url-kodierten Zeichenketten anstelle von Puffer-Eigenschaften.
Rückgabewert
Ein PublicKeyCredentialCreationOptions-Objekt.
Ausnahmen
EncodingErrorDOMException-
Wird ausgelöst, wenn das
options-Objekt nicht in einPublicKeyCredentialCreationOptions-Objekt konvertiert werden kann. SecurityErrorDOMException-
Die RP-Domäne ist nicht gültig.
Beschreibung
Der Web-Authentifizierungsprozess zum Erstellen eines Schlüsselpaares und Registrieren eines Benutzers beinhaltet, dass ein vertrauender Server der Web-App die Informationen bereitstellt, die zum Erstellen einer Anmeldeinformation erforderlich sind, einschließlich Informationen zur Benutzeridentität, der vertrauenden Partei und einer "Herausforderung".
Die Web-App übergibt diese Informationen an einen Authentifikator, um die Anmeldeinformation zu erstellen, indem sie navigator.credentials.create() mit einem PublicKeyCredentialCreationOptions-Objekt als Argument aufruft.
Die Spezifikation definiert nicht, wie die Informationen zum Erstellen einer Anmeldeinformation gesendet werden.
Ein praktischer Ansatz besteht darin, dass der Server die Informationen in einer JSON-Typdarstellung des PublicKeyCredentialCreationOptions-Objekts kapselt, das seine Struktur widerspiegelt, aber Puffer-Eigenschaften wie die challenge und user.id als base64url-Zeichenketten kodiert.
Dieses Objekt kann in eine JSON-Zeichenkette serialisiert, an die Web-App gesendet und deserialisiert und dann mit parseCreationOptionsFromJSON() in ein PublicKeyCredentialCreationOptions-Objekt konvertiert werden.
Beispiele
Beim Registrieren eines neuen Benutzers liefert ein vertrauender Server der Web-App Informationen über die erwarteten Anmeldeinformationen.
Der untenstehende Code definiert diese Informationen in der oben beschriebenen Form des options-Parameters (entnommen aus dem "Erhalt einer AuthenticatorAttestationResponse" in AuthenticatorResponse):
const createCredentialOptionsJSON = {
challenge:
"21, 31, 105, " /* 29 more random bytes generated by the server in this string */,
rp: {
name: "Example CORP",
id: "login.example.com",
},
user: {
id: "16",
name: "canand@example.com",
displayName: "Carina Anand",
},
pubKeyCredParams: [
{
type: "public-key",
alg: -7,
},
],
};
Da dieses Objekt nur JSON-Datentypen verwendet, kann es mit JSON.stringify() in JSON serialisiert und an die Web-App gesendet werden.
JSON.stringify(createCredentialOptionsJSON);
Die Web-App kann die JSON-Zeichenkette zurück in ein createCredentialOptionsJSON-Objekt deserialisieren (nicht gezeigt).
Die Methode parseCreationOptionsFromJSON() wird verwendet, um dieses Objekt in eine Form zu konvertieren, die in navigator.credentials.create() verwendet werden kann:
// Convert options to form used by create()
const createCredentialOptions =
PublicKeyCredential.parseCreationOptionsFromJSON(
createCredentialOptionsJSON, // JSON-type representation
);
navigator.credentials
.create({ publicKey: createCredentialOptions })
.then((newCredentialInfo) => {
// Handle the new credential information here.
})
.catch((err) => {
console.error(err);
});
Spezifikationen
| Spezifikation |
|---|
| Web Authentication: An API for accessing Public Key Credentials - Level 3> # dom-publickeycredential-parsecreationoptionsfromjson> |