PublicKeyCredential

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

* 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.

Das PublicKeyCredential-Interface stellt Informationen über ein öffentliches/privates Schlüsselpaar bereit, das eine Anmeldedaten zur Anmeldung bei einem Dienst unter Verwendung eines nicht-phishbaren und datenschutzverletzungsresistenten asymmetrischen Schlüsselpaares anstelle eines Passworts darstellt. Es erbt von Credential und ist Teil der Web Authentication API-Erweiterung zur Credential Management API.

Credential PublicKeyCredential

Hinweis: Diese API ist auf Top-Level-Kontexte beschränkt. Die Verwendung innerhalb eines <iframe>-Elements hat keine Wirkung.

Instanz-Eigenschaften

PublicKeyCredential.authenticatorAttachment Schreibgeschützt

Ein String, der den Mechanismus angibt, mit dem die WebAuthn-Implementierung zu dem Zeitpunkt an den Authentifikator angeschlossen ist, wenn der zugehörige Aufruf von navigator.credentials.create() oder navigator.credentials.get() abgeschlossen wird.

PublicKeyCredential.id Schreibgeschützt

Geerbt von Credential und überschrieben, um die base64url-Codierung von PublicKeyCredential.rawId darzustellen.

PublicKeyCredential.rawId Schreibgeschützt

Ein ArrayBuffer, der den global eindeutigen Bezeichner für dieses PublicKeyCredential enthält. Dieser Bezeichner kann verwendet werden, um Anmeldedaten für zukünftige Aufrufe von navigator.credentials.get() nachzuschlagen.

PublicKeyCredential.response Schreibgeschützt

Eine Instanz eines AuthenticatorResponse-Objekts. Es ist entweder vom Typ AuthenticatorAttestationResponse, wenn das PublicKeyCredential das Ergebnis eines Aufrufs von navigator.credentials.create() war, oder vom Typ AuthenticatorAssertionResponse, wenn das PublicKeyCredential das Ergebnis eines Aufrufs von navigator.credentials.get() war.

PublicKeyCredential.type Schreibgeschützt

Geerbt von Credential. Immer auf public-key für PublicKeyCredential-Instanzen gesetzt.

Statische Methoden

PublicKeyCredential.getClientCapabilities()

Gibt ein Promise zurück, das mit einem Objekt aufgelöst wird, das verwendet werden kann, um zu überprüfen, ob bestimmte WebAuthn-Funktionen und Erweiterungen unterstützt werden.

PublicKeyCredential.isConditionalMediationAvailable()

Gibt ein Promise zurück, das zu true aufgelöst wird, wenn bedingte Mediation verfügbar ist.

PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()

Gibt ein Promise zurück, das zu true aufgelöst wird, wenn ein an die Plattform gebundener Authentifikator in der Lage ist, den Benutzer zu verifizieren.

PublicKeyCredential.parseCreationOptionsFromJSON()

Komfortmethode zur Deserialisierung von vom Server gesendeten Anmelderegistrierungsdaten beim Registrieren eines Benutzers mit Anmeldedaten.

PublicKeyCredential.parseRequestOptionsFromJSON()

Komfortmethode zur Deserialisierung von vom Server gesendeten Anmeldeanforderungsdaten beim Authentifizieren eines (registrierten) Benutzers.

PublicKeyCredential.signalAllAcceptedCredentials()

Signalisiert dem Authentifikator alle gültigen Anmelde-IDs, die der Relying Party-Server noch für einen bestimmten Benutzer hat.

PublicKeyCredential.signalCurrentUserDetails()

Signalisiert dem Authentifikator, dass ein bestimmter Benutzer seinen Benutzernamen und/oder Anzeigenamen aktualisiert hat.

PublicKeyCredential.signalUnknownCredential()

Signalisiert dem Authentifikator, dass eine Anmelde-ID vom Relying Party-Server nicht erkannt wurde, zum Beispiel weil sie gelöscht wurde.

Instanz-Methoden

PublicKeyCredential.getClientExtensionResults()

Wenn Erweiterungen angefordert wurden, gibt diese Methode die Ergebnisse der Verarbeitung dieser Erweiterungen zurück.

PublicKeyCredential.toJSON()

Komfortmethode zur Erstellung einer JSON-String-Darstellung eines PublicKeyCredential zur Übermittlung an den Server beim Registrieren eines Benutzers mit Anmeldedaten und Authentifizieren eines registrierten Benutzers.

Beispiele

Erstellen einer neuen Instanz von PublicKeyCredential

Hier verwenden wir navigator.credentials.create(), um eine neue Anmeldeinformation zu generieren.

js
const createCredentialOptions = {
  publicKey: {
    challenge: new Uint8Array([
      21, 31, 105 /* 29 more random bytes generated by the server */,
    ]),
    rp: {
      name: "Example CORP",
      id: "login.example.com",
    },
    user: {
      id: new Uint8Array(16),
      name: "[email protected]",
      displayName: "Carina Anand",
    },
    pubKeyCredParams: [
      {
        type: "public-key",
        alg: -7,
      },
    ],
  },
};

navigator.credentials
  .create(createCredentialOptions)
  .then((newCredentialInfo) => {
    const response = newCredentialInfo.response;
    const clientExtensionsResults =
      newCredentialInfo.getClientExtensionResults();
  })
  .catch((err) => {
    console.error(err);
  });

Abrufen einer bestehenden Instanz von PublicKeyCredential

Hier holen wir eine existierende Anmeldeinformation von einem Authentifikator ab, indem wir navigator.credentials.get() verwenden.

js
const requestCredentialOptions = {
  publicKey: {
    challenge: new Uint8Array([
      /* bytes sent from the server */
    ]),
  },
};

navigator.credentials
  .get(requestCredentialOptions)
  .then((credentialInfoAssertion) => {
    // send assertion response back to the server
    // to proceed with the control of the credential
  })
  .catch((err) => {
    console.error(err);
  });

Spezifikationen

Specification
Web Authentication: An API for accessing Public Key Credentials - Level 3
# iface-pkcredential

Browser-Kompatibilität

Siehe auch