The PublicKeyCredentialCreationOptions
dictionary represents the object passed to CredentialsContainer.create()
as the value of the publicKey
option: that is, when using create()
to create a public key credential using the Web Authentication API.
This example creates a PublicKeyCredentialCreationOptions
, specifying only the required properties, and using defaults for the rest.
It then passes the object into navigator.credentials.create()
, to create a new public key credential.
const publicKey = {
challenge: challengeFromServer,
rp: { id: "acme.com", name: "ACME Corporation" },
user: {
id: new Uint8Array([79, 252, 83, 72, 214, 7, 89, 26]),
name: "jamiedoe",
displayName: "Jamie Doe",
},
pubKeyCredParams: [{ type: "public-key", alg: -7 }],
};
const publicKeyCredential = await navigator.credentials.create({ publicKey });
A successful create()
call returns a promise that resolves with a PublicKeyCredential
object instance, representing a public key credential that can later be used to authenticate a user via a WebAuthn get()
call. Its PublicKeyCredential.response
property contains an AuthenticatorAttestationResponse
object providing access to several useful pieces of information including the authenticator data, public key, transport mechanisms, and more.
navigator.credentials.create({ publicKey }).then((publicKeyCredential) => {
const response = publicKeyCredential.response;
const attestationObj = response.attestationObject;
const clientJSON = response.clientDataJSON;
const authenticatorData = response.getAuthenticatorData();
const pk = response.getPublicKey();
const pkAlgo = response.getPublicKeyAlgorithm();
const transports = response.getTransports();
});
Some of this data will need to be stored on the server for future authentication operations against this credential — for example the public key, the algorithm used, and the permissible transports.
See Creating a key pair and registering a user for more information about how the overall flow works.