Veröffentlicht: 15. Januar 2025
WebAuthn bietet einzigartige Funktionen wie die Interaktion mit Bluetooth für das Hybridprotokoll, die Kommunikation mit Passkey-Anbietern und die Vorschläge von Passkeys bei der Autofill-Funktion. Unterschiedliche Clients und Authenticator bieten jedoch unterschiedliche Unterstützung für WebAuthn-Funktionen. Diese Unterschiede können zu einer fragmentierten Nutzererfahrung führen, bei der einige Nutzer Fehler sehen oder bestimmte Authentifizierungsoptionen nicht nutzen können. Wenn Entwickler die Möglichkeit haben, die Clientfunktionen zu ermitteln, können sie robustere Authentifizierungsabläufe erstellen, die sich an diese Unterschiede anpassen.
Mit der PublicKeyCredential.getClientCapabilities()
-Methode können vertrauende Seiten ermitteln, welche WebAuthn-Funktionen vom Browser unterstützt werden. Die Methode gibt ein Versprechen zurück, das in eine Liste der unterstützten Funktionen aufgelöst wird. So können Entwickler die Authentifizierung und Workflows an die spezifischen Funktionen des Clients anpassen.
Kompatibilität
Browser Support
getClientCapabilities()
Die getClientCapabilities()
ist eine WebAuthn-API, mit der vertrauende Seiten ermitteln können, welche Funktionen verfügbar sind. Wenn Sie die API verwenden möchten, müssen Sie PublicKeyCredential.getClientCapabilities()
aufrufen. Das zurückgegebene Versprechen wird in ein Objekt aufgelöst, das Funktionen enthält, deren Verfügbarkeit jeweils mit true
oder false
angegeben ist. Wenn die Funktion undefined
ist, ist ihre Verfügbarkeit nicht bekannt.
if (window.PublicKeyCredential &&
if (PublicKeyCredential.getClientCapabilities) {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.conditionalGet === true &&
capabilities.passkeyPlatformAuthenticator === true) {
// The browser supports passkeys and the conditional mediation.
}
}
}
conditionalCreate
Der Browser kann Anmeldedaten ohne eine gut sichtbare modale Benutzeroberfläche erstellen, wenn der Nutzer bereits seine Einwilligung zum Erstellen gegeben hat.
conditionalGet
Der Browser kann Passkeys als Teil des Autofill-Dialogfelds statt in einer deutlich sichtbaren modalen Benutzeroberfläche anzeigen, um die Authentifizierung durchzuführen. Vorhandenes Äquivalent ist PublicKeyCredential.isConditionalMediationAvailable()
.
hybridTransport
Das Gerät kann Bluetooth verwenden, damit der Browser Anmeldedaten erstellen und sich damit über das Hybridprotokoll geräteübergreifend authentifizieren kann. Das bedeutet in der Regel, dass der Browser einen QR-Code anzeigen kann, den der Nutzer scannen und sich mit einem Smartphone anmelden kann, auf dem Anmeldedaten gespeichert sind.
passkeyPlatformAuthenticator
Der Browser kann Anmeldedaten erstellen und sich damit über einen Plattform-Authenticator oder ein anderes Gerät, das die Authentifizierung über das Hybridprotokoll unterstützt, authentifizieren. Gleichbedeutend mit hybridTransport ||
userVerifyingPlatformAuthenticator
.
relatedOrigins
Der Browser kann Anmeldedaten erstellen und sich damit authentifizieren, die nicht mit der RP-ID übereinstimmen, solange sie in der zugehörigen Datei mit Ursprungsangaben angegeben sind.
signalAllAcceptedCredentials
Der Browser kann dem Passkey-Anbieter verfügbare Anmeldedaten auf dem Server signalisieren, damit der Passkey-Anbieter die Passkey-Liste mit dem Server abgleichen kann.
signalCurrentUserDetails
Der Browser kann Nutzerinformationen wie Nutzername und Anzeigename auf dem Server an den Passkey-Anbieter senden, damit der Passkey-Anbieter seine Passkey-Informationen mit dem Server abgleichen kann.
signalUnknownCredential
Der Browser kann dem Passkey-Anbieter mitteilen, dass Anmeldedaten auf dem Server gelöscht wurden, damit der Passkey-Anbieter die Passkey-Liste mit dem Server abgleichen kann.
userVerifyingPlatformAuthenticator
Der Browser kann Anmeldedaten auf einem Plattform-Authenticator erstellen und sich damit authentifizieren. Das bedeutet nicht, dass der Browser das Hybridprotokoll unterstützt.
Das vorhandene Äquivalent ist PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
.
extensions
RPs können auch mit getClientCapabilities()
verfügbare Erweiterungen ermitteln.
if (capabilities['extension:appid'] === true) {
// appId extension is supported
}
Die Kennung beginnt mit extension:
, gefolgt von einem Erweiterungsnamen.
Informationen zu Erweiterungsnamen finden Sie in den bei der IANA definierten WebAuthn-Erweiterungs-IDs.
Weitere Informationen
Weitere Informationen zu Passkeys finden Sie unter Passwortlose Anmeldung mit Passkeys.