Baseline Widely available *
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:
Beachten Sie, dass die Federated Credential Management API (FedCM) den föderierten Credential-Typ ersetzt.
Syntax Parameteroptions
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 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
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 der create()
-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 dem publicKey
-Parameter kann durch eine publickey-credentials-create
Permissions Policy, die auf Ihrem Server gesetzt ist, blockiert werden.
Ein Promise
, das mit einem der folgenden Objekte aufgelöst wird:
FederatedCredential
, wenn der Credential-Typ federated
war.PasswordCredential
, wenn der Credential-Typ password
war.PublicKeyCredential
, wenn der Credential-Typ publicKey
war.Wenn kein Credential-Objekt erstellt werden kann, wird das Promise mit null
aufgelöst.
TypeError
Im Falle einer PasswordCredential
-Erstellungsanforderung wurden id
, origin
oder password
nicht bereitgestellt (leer).
NotAllowedError
DOMException
Mögliche Ursachen sind:
publickey-credentials-create
Permissions Policy blockiert.allow
-Attribut des iframes setzt keine geeignete publickey-credentials-create
-Richtlinie.<iframe>
hat keine transient activation.residentKey
ist im create()
-Aufruf in der Option PublicKeyCredentialCreationOptions
auf required
gesetzt), aber der Benutzer hat keinen Sicherheitsschlüssel, der discoverable credentials unterstützt und bricht die Operation ab.AbortError
DOMException
Die Operation wurde abgebrochen.
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 Browser-KompatibilitätRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4