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
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 laufendecreate()
-Operation abzubrechen. Eine abgebrochene Operation kann normal abgeschlossen werden (im Allgemeinen, wenn der Abbruch nach Abschluss der Operation eingegangen ist) oder mit einemAbortError
-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 dencreate()
-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 dempublicKey
-Parameter kann durch eine auf Ihrem Server gesetztepublickey-credentials-create
Berechtigungsrichtlinie blockiert werden.
Rückgabewert
Ein Promise
, das mit einem der folgenden Werte aufgelöst wird:
- Ein
FederatedCredential
, wenn der Berechtigungstypfederated
war. - Ein
PasswordCredential
, wenn der Berechtigungstyppassword
war. - Ein
PublicKeyCredential
, wenn der BerechtigungstyppublicKey
war.
Wenn kein Berechtigungsobjekt erstellt werden kann, wird das Promise mit null
aufgelöst.
Ausnahmen
TypeError
-
Im Fall einer
PasswordCredential
-Erstellungsanforderung wurdenid
,origin
oderpassword
nicht bereitgestellt (leer). NotAllowedError
DOMException
-
Mögliche Ursachen beinhalten:
- Die Nutzung wurde durch eine
publickey-credentials-create
Berechtigungsrichtlinie blockiert. - Die Funktion wird übergreifend aufgerufen, aber das
allow
-Attribut des iframes setzt keine geeignetepublickey-credentials-create
Richtlinie. - Die Funktion wird übergreifend aufgerufen und das
<iframe>
hat keine transiente Aktivierung.
- Die Nutzung wurde durch eine
AbortError
DOMException
-
Die Operation wurde abgebrochen.
Beispiele
Erstellen einer Passwortberechtigung
Dieses Beispiel erstellt eine Passwortberechtigung aus einem PasswordCredentialInit
-Objekt.
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.
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.
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.
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