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
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 laufendecreate()
-Operation abzubrechen. Eine abgebrochene Operation kann normal abgeschlossen werden (im Allgemeinen, wenn der Abbruch nach Abschluss der Operation empfangen wurde) oder mit einemAbortError
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 dercreate()
-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 dempublicKey
-Parameter kann durch einepublickey-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:
- Ein
FederatedCredential
, wenn der Credential-Typfederated
war. - Ein
PasswordCredential
, wenn der Credential-Typpassword
war. - Ein
PublicKeyCredential
, wenn der Credential-TyppublicKey
war.
Wenn kein Credential-Objekt erstellt werden kann, wird das Promise mit null
aufgelöst.
Ausnahmen
TypeError
-
Im Falle einer
PasswordCredential
-Erstellungsanforderung wurdenid
,origin
oderpassword
nicht bereitgestellt (leer). NotAllowedError
DOMException
-
Mögliche Ursachen sind:
- Die Verwendung wurde durch eine
publickey-credentials-create
Permissions Policy blockiert. - Die Funktion wird originübergreifend aufgerufen, aber das
allow
-Attribut des iframes setzt keine geeignetepublickey-credentials-create
-Richtlinie. - Die Funktion wird originübergreifend aufgerufen und das
<iframe>
hat keine transient activation. - Es wird versucht, ein discoverable credential zu erstellen (
residentKey
ist imcreate()
-Aufruf in der OptionPublicKeyCredentialCreationOptions
aufrequired
gesetzt), aber der Benutzer hat keinen Sicherheitsschlüssel, der discoverable credentials unterstützt und bricht die Operation ab.
- Die Verwendung wurde durch eine
AbortError
DOMException
-
Die Operation wurde abgebrochen.
Beispiele
Erstellung eines Passwort-Credentials
Dieses Beispiel erstellt ein Passwort-Credential 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
});
Erstellung eines föderierten Credentials
Dieses Beispiel erstellt ein föderiertes Credential 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);
});
Erstellung eines Public Key Credentials
Dieses Beispiel erstellt ein Public Key Credential 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 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.
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 |