WebAuthn (Authenticator Available)
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable() — это статический метод WebAuthn API в JavaScript, который возвращает Promise (Boolean).
Что он делает:
- Проверяет, доступен ли на устройстве платформенный аутентификатор, который может выполнять user verification (например, отпечаток пальца, Face ID, Windows Hello).
- Если такой аутентификатор есть и его можно использовать, метод вернёт true.
- Если нет — false.
Зачем же он нужен:
- Позволяет веб-приложению заранее понять, можно ли предложить пользователю вход через встроенные биометрические средства.
- Используется для адаптации интерфейса: например, показывать кнопку «Войти с Face ID» только если устройство поддерживает это.
PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()
.then(available => {
if (available) {
console.log("Можно использовать встроенный аутентификатор (например, Windows Hello).");
} else {
console.log("На этом устройстве нет встроенного аутентификатора.");
}
});На Windows и MacOS встроенные аутентификаторы для WebAuthn реализованы через системные механизмы биометрии и защиты ключей:
Windows
- Используется Windows Hello — это встроенный платформенный аутентификатор.
- Поддерживает вход по отпечатку пальца, распознаванию лица, PIN-коду, а также через встроенные модули безопасности (TPM).
- Когда сайт вызывает WebAuthn, Windows Hello предоставляет приватный ключ, хранящийся в защищённой области устройства, и выполняет проверку пользователя.
MacOS
- Используется Touch ID (на MacBook с датчиком) или Face ID (на некоторых устройствах Apple).
- Ключи хранятся в Secure Enclave — отдельном аппаратном модуле для криптографии и биометрии.
- Safari и другие браузеры на MacOS напрямую интегрированы с этим механизмом, поэтому WebAuthn может использовать встроенную биометрию без внешних ключей.
Общая идея
- В обоих случаях WebAuthn работает через системный API: браузер вызывает или.
- Операционная система проверяет пользователя (биометрия или PIN).
- Приватный ключ никогда не покидает устройство, а сайт получает только криптографическую подпись, которую можно проверить публичным ключом.
- Таким образом, на Windows встроенный аутентификатор — это Windows Hello, а на macOS — Touch ID / Face ID через Secure Enclave.
Статистика такова:
- На Windows - True - 50%, False - 50%
- На macOS - True - 100%