Реалізація аутентифікації через 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 для невеликого сайту становить $1500–$3000. При цьому економія на підтримці сягає до 60% на рік. Ми надаємо гарантію сумісності на 30 днів та сертифіковані розробки від експертів FIDO Alliance. Адже безпека акаунта підвищується до рівня, неможливого для фішингу.
Технічні деталі реалізації
Для серверної частини використовуємо бібліотеки з підтримкою WebAuthn (PHP, Node.js, Python). На фронтенді — Credential Management API. Ключі зберігаються в захищеному сховищі пристрою (Secure Enclave, TPM).Реалізуємо під ключ. Замовте впровадження Passkeys на вашому сайті — отримайте консультацію та оцінку проекту. Зв'яжіться з нами, щоб обговорити деталі вашого проекту.







