Signatur
Beschreibung
Die statische Methode PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() gehört zur Web Authentication API (WebAuthn). Sie liefert ein Promise, das mit true erfüllt wird, wenn das Gerät einen fest eingebauten Authenticator (Plattform-Authenticator) besitzt, der den Benutzer selbst verifizieren kann – etwa per Fingerabdruck, Gesichtserkennung oder Geräte-PIN. Beispiele sind Touch ID/Face ID, Windows Hello oder die Displaysperre unter Android.
Typischer Einsatz: Vor dem Anbieten einer Passkey- oder Biometrie-Anmeldung prüft man, ob das Gerät dies überhaupt unterstützt. Nur dann zeigt man z. B. einen Button „Mit Fingerabdruck anmelden“ oder bietet nach dem Passwort-Login an, einen Passkey auf diesem Gerät einzurichten. Externe Sicherheitsschlüssel (USB/NFC, sogenannte Roaming-Authenticators) werden von dieser Methode nicht berücksichtigt.
Die Methode nimmt keine Argumente entgegen und löst keine Benutzerinteraktion aus; sie ist daher gefahrlos beim Laden der Seite aufrufbar. Ein true bedeutet allerdings nur, dass ein solcher Authenticator vorhanden und eingerichtet ist – nicht, dass für die aktuelle Website bereits Zugangsdaten existieren.
Rückgabewert
Promise, das mit true erfüllt wird, wenn ein benutzerverifizierender Plattform-Authenticator verfügbar ist, andernfalls mit false.Beispiele
Einfache Verfügbarkeitsprüfung
const pruefeBiometrie = async () => {
if (!window.PublicKeyCredential) {
console.log('WebAuthn wird nicht unterstützt.');
return false;
}
const verfuegbar = await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();
console.log(`Plattform-Authenticator verfügbar: ${verfuegbar}`);
return verfuegbar;
};
pruefeBiometrie();
Passkey-Button nur bei Unterstützung anzeigen
const passkeyButton = document.querySelector('#passkey-login');
passkeyButton.hidden = true;
const initPasskeyUI = async () => {
try {
const ok = window.PublicKeyCredential &&
await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();
passkeyButton.hidden = !ok;
} catch (err) {
console.warn('Prüfung fehlgeschlagen:', err);
}
};
document.addEventListener('DOMContentLoaded', initPasskeyUI);
Kombiniert mit Conditional UI (Autofill für Passkeys)
const ermittleFaehigkeiten = async () => {
if (!window.PublicKeyCredential) return { plattform: false, autofill: false };
const [plattform, autofill] = await Promise.all([
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable(),
typeof PublicKeyCredential.isConditionalMediationAvailable === 'function'
? PublicKeyCredential.isConditionalMediationAvailable()
: Promise.resolve(false)
]);
return { plattform, autofill };
};
ermittleFaehigkeiten().then((f) => console.log(f));
// Wichtig · Fallstricke
- Sicherer Kontext erforderlich: WebAuthn ist nur über HTTPS (oder
localhost) verfügbar. In unsicheren Kontexten existiertwindow.PublicKeyCredentialnicht – vorher immer auf Existenz prüfen. - Nur Plattform-Authenticatoren: Externe Sicherheitsschlüssel (YubiKey etc.) und Passkeys auf einem anderen Gerät (Hybrid/QR-Code-Anmeldung) werden ignoriert. Ein
falseheißt also nicht, dass WebAuthn gar nicht nutzbar ist. - Eingerichtet ≠ vorhanden: Ist z. B. Windows Hello zwar unterstützt, aber nicht konfiguriert, kann das Ergebnis je nach Browser und Betriebssystem
falsesein. - Privatsphäre: Manche Browser (z. B. im privaten Modus oder bei aktiven Fingerprinting-Schutzmaßnahmen) können abweichende Werte liefern. Das Ergebnis sollte daher nur als Hinweis für die Benutzeroberfläche dienen, nicht als Sicherheitsentscheidung.
- Für eine umfassendere Abfrage bieten neuere Browser
PublicKeyCredential.getClientCapabilities()an (noch nicht überall verfügbar).