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 January 2020.

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 eine neue Berechtigung, die dann gespeichert und später mit der navigator.credentials.get()-Methode abgerufen werden kann. Die abgerufene Berechtigung kann dann von einer Website verwendet werden, um einen Benutzer zu authentifizieren.

Diese Methode unterstützt drei verschiedene Arten von Berechtigungen:

  • Eine Passwortberechtigung, die es einem Benutzer ermöglicht, sich mit einem Passwort anzumelden.
  • Eine föderierte Berechtigung, die es einem Benutzer ermöglicht, sich mit einem föderierten Identitätsanbieter anzumelden.
  • Eine Berechtigung mit öffentlichem Schlüssel, die es einem Benutzer ermöglicht, sich mit einem Authenticator wie einem im System integrierten biometrischen Leser oder einem abnehmbaren Hardware-Token anzumelden.

Beachten Sie, dass die Federated Credential Management API (FedCM) den föderierten Berechtigungstyp 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 Instanz des AbortSignal-Objekts, 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 eingegangen ist) oder mit einem AbortError-DOMException abgelehnt werden.

Jede der folgenden Eigenschaften repräsentiert einen zu erstellenden Berechtigungstyp. Es muss genau eine davon angegeben werden:

federated Optional

Ein FederatedCredentialInit-Objekt, das Anforderungen zum Erstellen einer föderierten Identitätsanbieter-Berechtigung enthält.

password Optional

Ein PasswordCredentialInit-Objekt, das Anforderungen zum Erstellen einer Passwortberechtigung enthält.

publicKey Optional

Ein PublicKeyCredentialCreationOptions-Objekt, das Anforderungen zum Erstellen einer Berechtigung mit öffentlichem Schlüssel enthält. Veranlasst den create()-Aufruf, den Benutzeragenten aufzufordern, neue Berechtigungen über einen Authenticator zu erstellen – entweder zur Registrierung eines neuen Kontos oder zur Verknüpfung eines neuen asymmetrischen Schlüsselpaares mit einem bestehenden Konto.

Hinweis: Die Nutzung von create() mit dem publicKey-Parameter kann durch eine auf Ihrem Server gesetzte publickey-credentials-create Berechtigungsrichtlinie blockiert werden.

Rückgabewert

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

Wenn kein Berechtigungsobjekt erstellt werden kann, wird das Promise mit null aufgelöst.

Ausnahmen

TypeError

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

NotAllowedError DOMException

Mögliche Ursachen beinhalten:

AbortError DOMException

Die Operation wurde abgebrochen.

Beispiele

Erstellen einer Passwortberechtigung

Dieses Beispiel erstellt eine Passwortberechtigung 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
});

Erstellen einer föderierten Berechtigung

Dieses Beispiel erstellt eine föderierte Berechtigung 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);
});

Erstellen einer Berechtigung mit öffentlichem Schlüssel

Dieses Beispiel erstellt eine Berechtigung mit öffentlichem Schlüssel 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 einem PublicKeyCredential-Objekt aufgelöst wird, das eine Berechtigung mit öffentlichem Schlüssel darstellt, die später über einen WebAuthn-get()-Aufruf zur Benutzerauthentifizierung verwendet werden kann. 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 mit dieser Berechtigung gespeichert werden — zum Beispiel der öffentliche Schlüssel, der verwendete Algorithmus und die zulässigen Transporte.

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

Spezifikationen

Specification
Credential Management Level 1
# dom-credentialscontainer-create

Browser-Kompatibilität

BCD tables only load in the browser