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