CredentialsContainer: create()-Methode

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2019.

* Some parts of this feature may have varying levels of support.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die create()-Methode der CredentialsContainer-Schnittstelle erstellt ein neues Credential, das dann gespeichert und später mit der navigator.credentials.get()-Methode abgerufen werden kann. Das abgerufene Credential kann dann von einer Website zur Authentifizierung eines Nutzers verwendet werden.

Diese Methode unterstützt drei verschiedene Arten von Credentials:

  • Ein Passwort-Credential, das einem Benutzer ermöglicht, sich mit einem Passwort anzumelden.
  • Ein föderiertes Credential, das einem Benutzer ermöglicht, sich mit einem föderierten Identitätsanbieter anzumelden.
  • Ein Public Key Credential, das einem Benutzer ermöglicht, sich mit einem Authenticator wie einem Biometrie-Leser, der in die Plattform integriert oder als abnehmbarer Hardware-Token vorhanden ist, anzumelden.

Beachten Sie, dass die Federated Credential Management API (FedCM) den föderierten Credential-Typ ersetzt.

Syntax

js
create()
create(options)

Parameter

options Optional

Ein Objekt, das Optionen für das angeforderte neue Credentials-Objekt enthält. Es kann die folgenden Eigenschaften enthalten:

signal Optional

Eine AbortSignal-Objektinstanz, die es ermöglicht, eine laufende create()-Operation abzubrechen. Eine abgebrochene Operation kann normal abgeschlossen werden (im Allgemeinen, wenn der Abbruch nach Abschluss der Operation empfangen wurde) oder mit einem AbortError DOMException abgelehnt werden.

Jede der folgenden Eigenschaften stellt einen Credential-Typ dar, der erstellt wird. Es muss genau einer von ihnen angegeben werden:

federated Optional

Ein FederatedCredentialInit-Objekt, das Anforderungen zur Erstellung eines föderierten Identitätsanbieter-Credentials enthält.

password Optional

Ein PasswordCredentialInit-Objekt, das Anforderungen zur Erstellung eines Passwort-Credentials enthält.

publicKey Optional

Ein PublicKeyCredentialCreationOptions-Objekt, das Anforderungen zur Erstellung eines Public Key Credentials enthält. Führt dazu, dass der create()-Aufruf den User-Agent auffordert, neue Credentials über einen Authenticator zu erstellen – entweder zur Registrierung eines neuen Kontos oder zum Verknüpfen eines neuen asymmetrischen Schlüsselpaares mit einem bestehenden Konto.

Hinweis: Die Verwendung von create() mit dem publicKey-Parameter kann durch eine publickey-credentials-create Permissions Policy, die auf Ihrem Server gesetzt ist, blockiert werden.

Rückgabewert

Ein Promise, das mit einem der folgenden Objekte aufgelöst wird:

Wenn kein Credential-Objekt erstellt werden kann, wird das Promise mit null aufgelöst.

Ausnahmen

TypeError

Im Falle einer PasswordCredential-Erstellungsanforderung wurden id, origin oder password nicht bereitgestellt (leer).

NotAllowedError DOMException

Mögliche Ursachen sind:

AbortError DOMException

Die Operation wurde abgebrochen.

Beispiele

Erstellung eines Passwort-Credentials

Dieses Beispiel erstellt ein Passwort-Credential aus einem PasswordCredentialInit-Objekt.

js
const credInit = {
  id: "1234",
  name: "Serpentina",
  origin: "https://example.org",
  password: "the last visible dog",
};

const makeCredential = document.querySelector("#make-credential");

makeCredential.addEventListener("click", async () => {
  const cred = await navigator.credentials.create({
    password: credInit,
  });
  console.log(cred.name);
  // Serpentina
  console.log(cred.password);
  // the last visible dog
});

Erstellung eines föderierten Credentials

Dieses Beispiel erstellt ein föderiertes Credential aus einem FederatedCredentialInit-Objekt.

js
const credInit = {
  id: "1234",
  name: "Serpentina",
  origin: "https://example.org",
  protocol: "openidconnect",
  provider: "https://provider.example.org",
};

const makeCredential = document.querySelector("#make-credential");

makeCredential.addEventListener("click", async () => {
  const cred = await navigator.credentials.create({
    federated: credInit,
  });
  console.log(cred.name);
  console.log(cred.provider);
});

Erstellung eines Public Key Credentials

Dieses Beispiel erstellt ein Public Key Credential aus einem PublicKeyCredentialCreationOptions-Objekt.

js
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 });

Der create()-Aufruf gibt, wenn er erfolgreich ist, ein Promise zurück, das mit einer PublicKeyCredential-Objektinstanz aufgelöst wird, die ein Public Key Credential darstellt, das später verwendet werden kann, um einen Benutzer über einen WebAuthn get()-Aufruf zu authentifizieren. Seine PublicKeyCredential.response-Eigenschaft enthält ein AuthenticatorAttestationResponse-Objekt, das Zugriff auf mehrere nützliche Informationen bietet, einschließlich der Authenticator-Daten, des öffentlichen Schlüssels, der Transportmechanismen und mehr.

js
navigator.credentials.create({ publicKey }).then((publicKeyCredential) => {
  const response = publicKeyCredential.response;

  // Access attestationObject ArrayBuffer
  const attestationObj = response.attestationObject;

  // Access client JSON
  const clientJSON = response.clientDataJSON;

  // Return authenticator data ArrayBuffer
  const authenticatorData = response.getAuthenticatorData();

  // Return public key ArrayBuffer
  const pk = response.getPublicKey();

  // Return public key algorithm identifier
  const pkAlgo = response.getPublicKeyAlgorithm();

  // Return permissible transports array
  const transports = response.getTransports();
});

Einige dieser Daten müssen auf dem Server für zukünftige Authentifizierungsvorgänge gegen dieses Credential gespeichert werden — zum Beispiel der öffentliche Schlüssel, der verwendete Algorithmus und die zulässigen Transports.

Hinweis: Weitere Informationen darüber, wie der gesamte Ablauf funktioniert, finden Sie unter Erstellung eines Schlüsselpaares und Registrierung eines Benutzers.

Spezifikationen

Specification
Credential Management Level 1
# dom-credentialscontainer-create

Browser-Kompatibilität