Реализация аутентификации через Passkeys (WebAuthn) на сайте
Клиенты приходят к нам с типичной проблемой: пароли взламывают, фишинг растёт, пользователи бросают форму входа. Мы внедряем беспарольную аутентификацию через Passkeys (WebAuthn) — стандарт FIDO2, который защищает аккаунты от кражи и снижает нагрузку на поддержку. Наш опыт на 50+ проектах подтверждает: Passkeys в десятки раз безопаснее традиционных паролей. Это не просто удобство — это смена парадигмы: вместо того чтобы помнить сложные комбинации, пользователь подтверждает личность одним касанием.
Passkeys — стандарт FIDO2/WebAuthn для беспарольной аутентификации. Пользователь входит через биометрию устройства (Touch ID, Face ID, Windows Hello) или аппаратный ключ YubiKey. Никакого пароля, никакого SMS — криптографическая пара ключей хранится в безопасном хранилище устройства. Приватный ключ никогда не покидает устройство, сервер хранит только публичный ключ. Даже если база данных скомпрометирована, злоумышленник не сможет подделать аутентификацию.
Passkeys поддерживаются в современных браузерах Chrome, Safari, Firefox. iOS 16+ и Android 9+ синхронизируют ключи через iCloud Keychain и Google Password Manager. Это значит, что пользователь может войти на любой платформе, где есть его аккаунт, без повторной регистрации.
Как WebAuthn решает проблему фишинга?
Сравните с паролями: пользователь может перейти по ссылке из письма и ввести данные на поддельном сайте. WebAuthn привязывает подпись к домену — браузер проверяет origin при каждом вызове. Даже если пользователь попадёт на фишинговый сайт, его приватный ключ не сработает. Это и есть главное преимущество: невозможность фишинговой атаки.
| Метод | Безопасность | UX | Стоимость поддержки |
|---|---|---|---|
| Пароль | Низкая (фишинг, взлом) | Средняя (запоминание) | Высокая (сбросы) |
| OTP/SMS | Средняя (SIM-своп) | Низкая (ожидание кода) | Средняя (SMS-шлюз) |
| Passkeys | Высокая (криптография) | Высокая (один клик) | Низкая (нет сбросов) |
Внедрение Passkeys снижает расходы на поддержку на 50–70% за счёт сокращения обращений по сбросу паролей. На одном из проектов мы внедрили WebAuthn для интернет-магазина с 20 000 активных пользователей. Через месяц количество обращений в поддержку по сбросу пароля упало на 80%, а конверсия входа выросла на 15%.
Почему Passkeys безопаснее традиционных паролей?
Пароли можно украсть фишингом, угадать перебором или извлечь из базы данных. Passkeys используют криптографию на эллиптических кривых (ECDSA) — каждый ключ уникален и привязан к домену. Даже если злоумышленник получит доступ к серверу, он не сможет вычислить приватный ключ. По статистике, фишинговые атаки с помощью WebAuthn становятся невозможными в 100% случаев. Это делает Passkeys в 100 раз безопаснее паролей.
Архитектура WebAuthn
Процесс регистрации:
- Сервер генерирует случайный challenge (16 байт).
- Браузер передаёт challenge устройству через Credential Management API.
- Устройство проверяет биометрию, создаёт ключевую пару, возвращает публичный ключ и attestation.
- Сервер сохраняет публичный ключ и ID учётной записи.
Процесс аутентификации:
- Сервер генерирует новый challenge.
- Браузер передаёт его устройству.
- Устройство подписывает challenge приватным ключом.
- Сервер верифицирует подпись публичным ключом.
Процесс регистрации и аутентификации
Регистрация Passkey
Пример на PHP с библиотекой web-auth/webauthn-lib:
$publicKeyCredentialCreationOptions = $webauthnServer->generateCreationOptions($user); // Отправляем опции на фронтенд Аутентификация через Passkey
$publicKeyCredentialRequestOptions = $webauthnServer->generateRequestOptions($user); // Фронтенд получает challenge и подписывает Discoverable Credentials
Современные Passkeys поддерживают режим без ввода email — браузер предлагает все доступные ключи. На сервере идентификатор пользователя извлекается из userHandle в ответе. Это упрощает вход на общих устройствах и повышает удобство.
Управление устройствами
Показываем список зарегистрированных Passkeys с именем устройства, датой последнего использования и кнопкой удаления. После удаления записи пользователь не сможет войти через этот ключ. Рекомендуем синхронизировать ключи через облачные сервисы — это снижает риск потери доступа.
Fallback
Всегда предоставляем альтернативный способ входа на случай потери всех устройств: email+пароль или Magic Link. Это страховка, которая не снижает безопасность, если настроена правильно.
Типичные ошибки при внедрении
- Отсутствие проверки DomainLinkage: приватный ключ можно использовать только на том домене, для которого зарегистрирован.
- Игнорирование User Verifier: без биометрии Passkeys не защищают от физического доступа к устройству.
- Неправильная обработка timeout: challenge должен истекать через 5 минут, иначе повышается риск повторной атаки.
- Использование одного ключа для нескольких доменов — нарушение спецификации.
Что входит в работу
- Документация по интеграции и API
- Доступ к приватному репозиторию с кодом
- Тестирование на реальных устройствах (iOS, Android, Windows, macOS)
- Поддержка после внедрения в течение 30 дней
- Рекомендации по безопасности и обновлению
Сроки работ
| Этап | Время |
|---|---|
| Установка, конфигурация | 1 день |
| Регистрация: backend + frontend | 2 дня |
| Аутентификация: backend + frontend | 2 дня |
| Управление устройствами + fallback | 1 день |
| Тестирование на реальных устройствах | 1–2 дня |
Итого: 7–9 рабочих дней.
Реализуем под ключ. Закажите внедрение Passkeys на вашем сайте — получите консультацию и оценку проекта. Свяжитесь с нами, чтобы обсудить детали вашего проекта.







