Реализация аутентификации через Passkeys (WebAuthn) на сайте

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Реализация аутентификации через Passkeys (WebAuthn) на сайте
Сложная
~3-5 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Реализация аутентификации через Passkeys (WebAuthn) на сайте

Passkeys — стандарт FIDO2/WebAuthn для беспарольной аутентификации. Пользователь входит через биометрию устройства (Touch ID, Face ID, Windows Hello) или аппаратный ключ (YubiKey). Никакого пароля, никакого SMS — криптографическая пара ключей хранится в безопасном хранилище устройства.

Passkeys поддерживаются в Chrome 108+, Safari 16+, Firefox 122+. iOS 16+ и Android 9+ синхронизируют ключи через iCloud Keychain и Google Password Manager.

Архитектура WebAuthn

Процесс регистрации: Сервер генерирует challenge, браузер передаёт его устройству. Устройство проверяет биометрию, создаёт ключевую пару, возвращает публичный ключ и attestation. Сервер сохраняет публичный ключ.

Процесс аутентификации: Сервер генерирует challenge, браузер передаёт его устройству. Устройство подписывает challenge приватным ключом. Сервер верифицирует подпись публичным ключом.

Приватный ключ никогда не покидает устройство. Сервер хранит только публичный ключ.

Серверная библиотека

 INFO  No publishable resources for tag [webauthn-migrations].

 Illuminate\Database\QueryException 

 SQLSTATE[08006] [7] could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5433? (SQL: select * from information_schema.tables where table_catalog = truetech and table_schema = public and table_name = migrations and table_type = 'BASE TABLE')

at D:\domains\atlas.loc\vendor\laravel\framework\src\Illuminate\Database\Connection.php:760 756▕ // If an exception occurs when attempting to run a query, we'll format the error 757▕ // message to include the bindings with SQL, which will make this exception a 758▕ // lot more helpful to the developer instead of just the database's errors. 759▕ catch (Exception $e) { ➜ 760▕ throw new QueryException( 761▕ $query, $this->prepareBindings($bindings), $e 762▕ ); 763▕ } 764▕ }

1 D:\domains\atlas.loc\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70  PDOException::("SQLSTATE[08006] [7] could not connect to server: Connection refused (0x0000274D/10061) Is the server running on host "127.0.0.1" and accepting TCP/IP connections on port 5433?")

2 D:\domains\atlas.loc\vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:70  PDO::__construct("pgsql:host=127.0.0.1;dbname='truetech';port=5433;sslmode=prefer", "truetech", Object(SensitiveParameterValue), [])

Регистрация Passkey

Шаг 1: Challenge от сервера

Шаг 2: Браузер создаёт ключевую пару

Шаг 3: Сервер верифицирует и сохраняет публичный ключ

Аутентификация через Passkey

Получить challenge:

Браузер подписывает challenge:

Верификация на сервере:

Схема БД

Discoverable Credentials

Современные Passkeys поддерживают режим без ввода email — браузер предлагает все доступные ключи:

На сервере идентификатор пользователя извлекается из в ответе.

Управление устройствами

Показывать список зарегистрированных Passkeys с именем устройства, датой последнего использования и кнопкой удаления. После удаления записи пользователь не сможет войти через этот ключ.

Fallback

Всегда предоставлять альтернативный способ входа на случай потери всех устройств: email+пароль или Magic Link.

Сроки работ

Этап Время
Установка, конфигурация 1 день
Регистрация: backend + frontend 2 дня
Аутентификация: backend + frontend 2 дня
Управление устройствами + fallback 1 день
Тестирование на реальных устройствах 1–2 дня

Итого: 7–9 рабочих дней.