Back to Content

PublicKeyCredential: toJSON() method

files/en-us/web/api/publickeycredential/tojson/index.md

latest4.3 KB
Original Source

{{APIRef("Web Authentication API")}}{{securecontext_header}}

The toJSON() method of the {{domxref("PublicKeyCredential")}} interface returns a {{glossary("JSON type representation")}} of a {{domxref("PublicKeyCredential")}}.

The properties of the returned object depend on whether the credential is returned by navigator.credentials.create() when creating a key pair and registering a user, or navigator.credentials.get() when authenticating a user.

This method is automatically invoked when web app code calls JSON.stringify() to serialize a {{domxref("PublicKeyCredential")}} so that it can be sent to relying party server when registering or authenticating a user. It not intended to be called directly in web app code.

Syntax

js-nolint
toJSON()

Parameters

None.

Return value

A {{glossary("JSON type representation")}} of a PublicKeyCredential object.

The included properties depend on whether the credential was returned by navigator.credentials.create() on registration, or navigator.credentials.get() when authenticating a user. The values and types of included properties are the same as for PublicKeyCredential, with the exception that base64url-encoded strings are used in place of buffer properties.

The object properties are:

  • id
    • : The value returned by {{domxref("PublicKeyCredential.id")}}.
  • rawId
    • : A base64url-encoded version of {{domxref("PublicKeyCredential.rawId")}}.
  • authenticatorAttachment {{optional_inline}}
    • : The value returned by {{domxref("PublicKeyCredential.authenticatorAttachment")}}.
  • type
    • : The string "public-key".
  • clientExtensionResults
    • : An array containing base64url-encoded versions of the values returned by {{domxref("PublicKeyCredential.getClientExtensionResults()")}}.
  • response
    • : The response property object depends on whether the credentials are returned following a registration or authentication operation.
      • When registering a new user response will be a JSON-type representation of {{domxref("AuthenticatorAttestationResponse")}} where buffer values have been base64url encoded.

      • When authenticating a user the returned value will be a JSON-type representation version of {{domxref("AuthenticatorAssertionResponse")}} where buffer values have been base64url encoded.

Exceptions

  • SecurityError {{domxref("DOMException")}}
    • : The RP domain is not valid.

Examples

When registering a new user, a relying party server will supply information about the expected credentials to the web app. The web app calls navigator.credentials.create() with the received information (createCredentialOptions below), which returns a promise that fulfills with the new credential (a {{domxref("PublicKeyCredential")}}).

js
const newCredentialInfo = await navigator.credentials.create({
  createCredentialOptions,
});

The web app then serializes the returned credential using JSON.stringify() (which in turn calls toJSON()) and posts it back to the server.

js
const registrationURL = "https://example.com/registration";
const apiRegOptsResp = await fetch(registrationURL, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(newCredentialInfo), // Calls newCredentialInfo.toJSON
});

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}

See also

  • Web Authentication API
  • {{domxref("PublicKeyCredential.parseCreationOptionsFromJSON_static", "PublicKeyCredential.parseCreationOptionsFromJSON()")}}
  • {{domxref("PublicKeyCredential.parseRequestOptionsFromJSON_static", "PublicKeyCredential.parseRequestOptionsFromJSON()")}}