PublicKeyCredential: Methode toJSON()
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 Methode toJSON() der Schnittstelle PublicKeyCredential gibt ein JSON-serialisierbares einfaches Objekt zurück, das das PublicKeyCredential-Objekt repräsentiert.
Die Methode wird bei der JSON-Serialisierung automatisch von JSON.stringify() aufgerufen, wenn ein PublicKeyCredential-Objekt angetroffen wird.
Syntax
toJSON()
Parameter
Keine.
Rückgabewert
Ein JSON-serialisierbares einfaches Objekt mit den folgenden Eigenschaften:
authenticatorAttachmentOptional: nicht vorhanden, wenn der WertnullistclientExtensionResults: ein JSON-serialisierbares Objekt, das die vongetClientExtensionResults()zurückgegebenen Werte repräsentiert, wobei Pufferwerte als base64url-Zeichenfolgen codiert sindidrawId: als base64url-Zeichenfolge codiertresponse: ein JSON-serialisierbares Objekt, das den Wert vonAuthenticatorResponserepräsentiert, wobei Pufferwerte als base64url-Zeichenfolgen codiert sind. Im Einzelnen:- Wenn es sich um eine
AuthenticatorAssertionResponsehandelt, enthält es die folgenden Eigenschaften:authenticatorDataclientDataJSONsignatureuserHandleOptional: nicht vorhanden, wenn der Wertnullist
- Wenn es sich um eine
AuthenticatorAttestationResponsehandelt, enthält es die folgenden Eigenschaften:attestationObjectauthenticatorData: der vongetAuthenticatorData()zurückgegebene WertclientDataJSONpublicKeyOptional: der vongetPublicKey()zurückgegebene Wert; entfällt, wenn ernullistpublicKeyAlgorithm: der vongetPublicKeyAlgorithm()zurückgegebene Werttransports: der vongetTransports()zurückgegebene Wert
- Wenn es sich um eine
type
Sofern nicht anders angegeben, wird der Wert jeder Eigenschaft unverändert übernommen.
Ausnahmen
SecurityErrorDOMException-
Die RP-Domain ist ungültig.
Beispiele
>toJSON() direkt aufrufen
Bei der Registrierung eines neuen Benutzers stellt der Server der Relying Party der Web-App Informationen über die erwarteten Anmeldedaten bereit.
Die Web-App ruft navigator.credentials.create() mit den empfangenen Informationen (createCredentialOptions unten) auf. Die Methode gibt ein Promise zurück, das mit den neuen Anmeldedaten (einem PublicKeyCredential) erfüllt wird.
Ein direkter Aufruf von toJSON() gibt ein einfaches Objekt zurück. Dessen Eigenschaften haben dieselben Werte wie die entsprechenden Eigenschaften des ursprünglichen Objekts.
const credential = await navigator.credentials.create({
publicKey: createCredentialOptions,
});
const json = credential.toJSON();
console.log(json); // A plain object
console.log(typeof json); // "object"
console.log(json.id); // Same value as credential.id
Als JSON-Zeichenfolge serialisieren
Die zurückgegebenen Anmeldedaten werden mit JSON.stringify() serialisiert, wodurch die Methode toJSON() automatisch aufgerufen wird. Die Web-App sendet die serialisierten Anmeldedaten zurück an den Server.
const jsonString = JSON.stringify(credential);
console.log(jsonString);
const registrationURL = "https://example.com/registration";
const apiRegOptsResp = await fetch(registrationURL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: jsonString,
});
Dadurch würde eine JSON-Zeichenfolge wie die folgende protokolliert (zur besseren Lesbarkeit formatiert):
{
"authenticatorAttachment": "platform",
"clientExtensionResults": {},
"id": "...",
"rawId": "...",
"response": {
"attestationObject": "...",
"authenticatorData": "...",
"clientDataJSON": "...",
"publicKey": "...",
"publicKeyAlgorithm": -7,
"transports": ["internal"]
},
"type": "public-key"
}
Die base64url-codierten Werte sind zur besseren Lesbarkeit als "..." abgekürzt.
Spezifikationen
| Spezifikation |
|---|
| Web Authentication: An API for accessing Public Key Credentials - Level 4> # dom-publickeycredential-tojson> |