PublicKeyCredential: toJSON() method

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The toJSON() method of the PublicKeyCredential interface returns a JSON type representation of a 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 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
toJSON()

Parameters

None.

Return value

A 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 PublicKeyCredential.id.

rawId

A base64url-encoded version of PublicKeyCredential.rawId.

authenticatorAttachment Optional

The value returned by PublicKeyCredential.authenticatorAttachment.

type

The string "public-key".

clientExtensionResults

An array containing base64url-encoded versions of the values returned by PublicKeyCredential.getClientExtensionResults().

response

The response property object depends on whether the credentials are returned following a registration or authentication operation.

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 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 registration_url = "https://example.com/registration";
const apiRegOptsResp = await fetch(registration_url, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(newCredentialInfo), //Calls newCredentialInfo.toJSON
});

Specifications

Specification
Web Authentication: An API for accessing Public Key Credentials - Level 3
# dom-publickeycredential-tojson

Browser compatibility

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
toJSON() method

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

See also