Реализация WebAuthn в Next.js: Практическое руководство
Практическое руководство по реализации WebAuthn в Next.js с примерами живого кода.
Практическое руководство по реализации WebAuthn в Next.js с примерами живого кода.
С возвращением в нашу серию статей о WebAuthn. В предыдущих статьях мы рассмотрели основы WebAuthn и путеводитель 101. Если вы только присоединились к нам, не стесняйтесь ознакомиться с этими базовыми статьями, чтобы наверстать упущенное.
Сегодня мы засучим рукава и перейдем от теории к практике. Мы будем использовать мощь Next.js с новой функцией "Server Actions". Наша цель? Реализовать WebAuthn в приложении Next.js и подготовиться к WebAuthn.
Прежде чем погрузиться в программирование, вот что ждет вас в конце путешествия - полностью функциональный демо-сайт. Изучите его, чтобы увидеть WebAuthn в действии и почувствовать, что вы будете создавать. На этом демо-сайте вы можете зарегистрировать новых пользователей и войти в систему с только что зарегистрированными паролями.

А для тех, кто предпочитает держать карту в руках, у нас есть решение для вас! Весь код, который мы будем обсуждать, доступен в открытом репозитории GitHub. Этот репозиторий - ваш путеводитель, предлагающий полный исходный код нашей реализации.
Готовы отправиться в это захватывающее приключение? Давайте начнем!
Прежде чем начать, давайте убедимся, что у нас есть все необходимое:
@simplewebauthn/browser, @simplewebauthn/server и @simplewebauthn/typescript-typesТеперь, имея в руках все инструменты и материалы, мы готовы начать создание.
Легко инициализировать хранилище KV как в производственной среде, так и в локальной разработке, следуйте этому руководству, чтобы подключить хранилище KV к вашему проекту и извлечь значения среды: https://vercel.com/docs/storage/vercel-kv/quickstart
Мы экспортировали 2 функции:
getCurrentSession: использует помощник cookie в Next.js для создания сессии для текущего запроса и возвращает значение.updateCurrentSession: сохраняет данные в текущую сессию.Аналогично реализации сессий, давайте реализуем простую базу данных пользователей.
Мы создали функции для поиска пользователя по электронной почте и обновления данных пользователя по электронной почте. Помните, что это лишь демонстрация, в реальном продукте данные о пользователе обычно хранятся в базе данных.
Прежде чем мы продолжим, давайте посмотрим на диаграмму процесса регистрации и аутентификации:
Как видите, нам нужно подготовить 2 функции:
generateWebAuthnRegistrationOptionsverifyWebAuthnRegistrationПохожее на регистрацию, вход также требует 2 функции:
generateWebAuthnLoginOptionsverifyWebAuthnLoginВот код:
Мы завершили подготовку, давайте создадим страницу:
Поздравляем с прохождением всех тонкостей внедрения WebAuthn в приложение Next.js. В завершение важно рассмотреть некоторые ключевые аспекты развертывания в производственной среде.
userId или username.Спасибо, что присоединились к нам в этом образовательном путешествии. Даже в этом минимальном примере интегрировать WebAuthn - не простая задача, есть и другой вариант, попробуйте WebAuthn в MFA от Logto: