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.

Die PublicKeyCredential-Schnittstelle bietet Informationen über ein öffentliches/privates Schlüsselpaar, das als Berechtigungsnachweis für die Anmeldung bei einem Dienst mittels eines nicht-phishbaren und datenpannenresistenten asymmetrischen Schlüsselpaares anstelle eines Passworts dient. Sie erbt von Credential und ist Teil der Web Authentication API-Erweiterung für die Credential Management API.

Credential PublicKeyCredential

Hinweis: Diese API ist auf kontextübergreifende Nutzung beschränkt. Die Verwendung innerhalb eines <iframe>-Elements hat keinen Effekt.

Instanz-Eigenschaften

PublicKeyCredential.authenticatorAttachment Schreibgeschützt

Ein String, der den Mechanismus angibt, mit dem die WebAuthn-Implementierung zum Zeitpunkt des Abschlusses des zugehörigen navigator.credentials.create() oder navigator.credentials.get()-Aufrufs am Authentifikator angehängt ist.

PublicKeyCredential.id Schreibgeschützt

Von Credential geerbt und überschrieben, um die base64url Kodierung von PublicKeyCredential.rawId darzustellen.

PublicKeyCredential.rawId Schreibgeschützt

Ein ArrayBuffer, der die global eindeutige Kennung für diese PublicKeyCredential enthält. Diese Kennung kann verwendet werden, um Berechtigungsnachweise für zukünftige Aufrufe von navigator.credentials.get() abzurufen.

PublicKeyCredential.response Schreibgeschützt

Eine Instanz eines AuthenticatorResponse-Objekts. Es handelt sich entweder um einen AuthenticatorAttestationResponse-Typ, wenn das PublicKeyCredential das Ergebnis eines navigator.credentials.create()-Aufrufs war, oder um einen AuthenticatorAssertionResponse-Typ, wenn das PublicKeyCredential das Ergebnis eines navigator.credentials.get()-Aufrufs war.

PublicKeyCredential.type Schreibgeschützt

Von Credential geerbt. Für PublicKeyCredential-Instanzen immer auf public-key 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-Fähigkeiten und Erweiterungen unterstützt werden.

PublicKeyCredential.isConditionalMediationAvailable()

Gibt ein Promise zurück, das zu true aufgelöst wird, wenn bedingte Vermittlung 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 servergesendeten Registrierungsdaten für Berechtigungsnachweise bei der Registrierung eines Benutzers mit Anmeldedaten.

PublicKeyCredential.parseRequestOptionsFromJSON()

Komfortmethode zur Deserialisierung von servergesendeten Anforderungsdaten für Berechtigungsnachweise bei der Authentifizierung eines (registrierten) Benutzers.

PublicKeyCredential.signalAllAcceptedCredentials() Experimentell

Meldet dem Authentifikator alle gültigen credential IDs, die der Relying Party-Server für einen bestimmten Benutzer weiterhin hält.

PublicKeyCredential.signalCurrentUserDetails() Experimentell

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

PublicKeyCredential.signalUnknownCredential() Experimentell

Meldet dem Authentifikator, dass eine credential ID vom Relying Party-Server nicht erkannt wurde, beispielsweise weil sie gelöscht wurde.

Instanzmethoden

PublicKeyCredential.getClientExtensionResults()

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

PublicKeyCredential.toJSON()

Komfortmethode zum Erstellen einer JSON-String-Repräsentation eines PublicKeyCredential zur Übermittlung an den Server bei der Registrierung eines Benutzers mit Anmeldedaten und Authentifizierung eines registrierten Benutzers.

Beispiele

Erstellen einer neuen Instanz von PublicKeyCredential

Hier verwenden wir navigator.credentials.create(), um einen neuen Berechtigungsnachweis zu erzeugen.

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: "canand@example.com",
      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 vorhandenen Instanz von PublicKeyCredential

Hier holen wir einen vorhandenen Berechtigungsnachweis von einem Authentifikator, 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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
PublicKeyCredential
authenticatorAttachment
getClientCapabilities() static method
getClientExtensionResults() method
isConditionalMediationAvailable() static method
isUserVerifyingPlatformAuthenticatorAvailable() static method
parseCreationOptionsFromJSON() static method
parseRequestOptionsFromJSON() static method
rawId
response
signalAllAcceptedCredentials() static method
Experimental
signalCurrentUserDetails() static method
Experimental
signalUnknownCredential() static method
Experimental
toJSON() method

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
Has more compatibility info.

Siehe auch