Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 verwendet werden, um einen Benutzer zu authentifizieren.

Diese Methode unterstützt drei verschiedene Typen von Credentials:

  • Ein Passwort-Credential, das es einem Benutzer ermöglicht, sich mit einem Passwort anzumelden.
  • Ein föderiertes Credential, das es einem Benutzer ermöglicht, sich mit einem föderierten Identitätsanbieter anzumelden.
  • Ein Public Key Credential, das es einem Benutzer ermöglicht, sich mit einem Authentifikator wie etwa einem in die Plattform integrierten biometrischen Leser oder einem entfernbaren Hardware-Token anzumelden.

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

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 empfangen wurde) oder mit einem AbortError-DOMException fehlschlagen.

Jede der folgenden Eigenschaften stellt einen zu erstellenden Credential-Typ dar. Einer und nur einer von ihnen muss angegeben werden:

federated Optional

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

password Optional

Ein PasswordCredentialInit-Objekt, das Anforderungen für die Erstellung eines Passwort-Credentials enthält.

publicKey Optional

Ein PublicKeyCredentialCreationOptions-Objekt, das Anforderungen für die Erstellung eines Public Key Credentials enthält. Veranlasst den create()-Aufruf, dass der Benutzeragent neue Credentials über einen Authentifikator erstellt — entweder für die Registrierung eines neuen Kontos oder für die 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 festgelegte publickey-credentials-create Permissions Policy blockiert werden.

Rückgabewert

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

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

Ausnahmen

TypeError

Im Falle einer Erstellung eines PasswordCredential-Antrags, 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: "serpent1234", // "username" in a typical username/password pair
  name: "Serpentina", // display name for credential
  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.id);
  // serpent1234
  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, wenn erfolgreich, gibt ein Promise zurück, das mit einem PublicKeyCredential-Objektinstanz aufgelöst wird, das ein Public Key Credential darstellt, das später über einen WebAuthn-get()-Aufruf zur Authentifizierung eines Benutzers verwendet werden kann. Seine PublicKeyCredential.response-Eigenschaft enthält ein AuthenticatorAttestationResponse-Objekt, das Zugriff auf mehrere nützliche Informationen bietet, einschließlich der Authentifikatordaten, 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 künftige Authentifizierungsvorgänge gegen dieses Credential gespeichert werden — beispielsweise 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 Schlüsselpaar und Benutzer registrieren.

Spezifikationen

Specification
Credential Management Level 1
# dom-credentialscontainer-create

Browser-Kompatibilität