PublicKeyCredential: parseCreationOptionsFromJSON() statische Methode
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die statische Methode parseCreationOptionsFromJSON()
des PublicKeyCredential
-Interfaces erstellt ein PublicKeyCredentialCreationOptions
-Objekt aus einer JSON-Darstellung seiner Eigenschaften.
Die Methode ist eine Komfortfunktion zur Umwandlung von Anmeldeoptionsinformationen, die von einem vertrauenswürdigen Server bereitgestellt werden, in eine Form, die eine Webanwendung nutzen kann, um ein Anmeldeinformation zu erstellen.
Syntax
PublicKeyCredential.parseCreationOptionsFromJSON(options)
Parameter
options
-
Ein Objekt mit derselben Struktur wie ein
PublicKeyCredentialCreationOptions
, jedoch mit base64url-kodierten Zeichenfolgen anstelle von Puffer-Eigenschaften.
Rückgabewert
Ein PublicKeyCredentialCreationOptions
-Objekt.
Ausnahmen
EncodingError
DOMException
-
Wird ausgelöst, wenn das
options
-Objekt nicht in einPublicKeyCredentialCreationOptions
-Objekt umgewandelt werden kann. SecurityError
DOMException
-
Die RP-Domain ist ungültig.
Beschreibung
Der Web-Authentifizierungsprozess zur Erstellung eines Schlüsselpaares und der Registrierung eines Benutzers beinhaltet, dass ein vertrauenswürdiger Server der Webanwendung Informationen bereitstellt, die zum Erstellen einer Anmeldeinformation notwendig sind, einschließlich Details zur Benutzeridentität, der vertrauenswürdigen Partei und einer "Challenge".
Die Webanwendung übergibt diese Informationen an einen Authenticator, um die Anmeldeinformation zu erstellen, indem sie navigator.credentials.create()
mit einem PublicKeyCredentialCreationOptions
-Objekt als Argument aufruft.
Die Spezifikation definiert nicht, wie die Informationen zur Erstellung einer Anmeldeinformation gesendet werden. Ein praktischer Ansatz besteht darin, dass der Server die Informationen in einer JSON-Darstellung des PublicKeyCredentialCreationOptions
-Objekts kapselt, das dessen Struktur widerspiegelt, aber Puffer-Eigenschaften wie die challenge
und user.id
als base64url-Zeichenfolgen kodiert. Dieses Objekt kann in eine JSON-Zeichenfolge serialisiert, zur Webanwendung gesendet und deserialisiert und dann mithilfe von parseCreationOptionsFromJSON()
in ein PublicKeyCredentialCreationOptions
-Objekt umgewandelt werden.
Beispiele
Beim Registrieren eines neuen Benutzers stellt ein vertrauenswürdiger Server der Webanwendung Informationen zu den erwarteten Anmeldeinformationen zur Verfügung. Der folgende Code definiert diese Informationen in der oben unter dem options
-Parameter beschriebenen Form (entnommen aus der "Erfassung 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 mithilfe von JSON.stringify()
zu JSON serialisiert und zur Webanwendung gesendet werden.
JSON.stringify(createCredentialOptionsJSON);
Die Webanwendung kann die JSON-Zeichenfolge zurück in ein createCredentialOptionsJSON
-Objekt deserialisieren (nicht gezeigt). Die parseCreationOptionsFromJSON()
-Methode wird verwendet, um dieses Objekt in die 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
Specification |
---|
Web Authentication: An API for accessing Public Key Credentials - Level 3 # dom-publickeycredential-parsecreationoptionsfromjson |
Browser-Kompatibilität
BCD tables only load in the browser