Перейти к основному контенту
Change page

Аутентификация в Эфириуме

Если вы пришли из традиционной веб-разработки, вы привыкли к входу по имени пользователя и паролю, потокам OAuth и сессионным файлам cookie. Аутентификация в Эфириуме работает иначе — и во многом проще.

В Эфириуме пользователь подтверждает свою личность путем подписания сообщения с помощью своего кошелька. Не нужно хранить пароли. Нет базы данных учетных данных, которая может утечь. Только криптография.

Чем это отличается от Веб2?

Веб2Эфириум
Имя пользователя + парольАдрес кошелька + подпись
Сервер хранит учетные данныеПользователь владеет приватным ключом
Сессии управляются через cookies / JWTСессии начинаются с офчейн-подписи кошелька
«Войти через Google»«Войти через Эфириум»
Процедуры сброса пароляВосстановление через сид-фразу

Фундаментальный сдвиг: в Веб2 вас аутентифицирует централизованный сервер. В Эфириуме вы аутентифицируете себя сами, доказывая, что контролируете определенный адрес — и любой может проверить это независимо.

Предварительные требования

Убедитесь, что вы понимаете:

Как работает аутентификация на основе кошелька

Основной процесс прост:

  1. Ваше децентрализованное приложение (dapp) просит пользователя подключить свой кошелек (через МетаМаск, Rainbow, WalletConnect и т. д.)
  2. Кошелек передает адрес Эфириума пользователя — это его публичный идентификатор
  3. Ваше dapp генерирует уникальное сообщение (нонс или запрос)
  4. Пользователь подписывает сообщение своим приватным ключом (это происходит внутри кошелька)
  5. Ваш бэкенд проверяет подпись на соответствие заявленному адресу
  6. Если подпись действительна, пользователь аутентифицирован

Никакой пароль не вводился, не сохранялся и не передавался.

Вход через Эфириум (EIP-4361)

EIP-4361 (открывается в новой вкладке) определяет стандартный формат сообщения для входа через Эфириум, обычно называемый SIWE (Sign-In with Ethereum). Он заменяет произвольное подписание сообщений структурированным и безопасным стандартом.

Сообщение SIWE выглядит так:

Ключевые особенности SIWE:

  • Привязка к домену — сообщение включает домен, что предотвращает фишинг
  • ID цепи — указывает, для какой сети действительна подпись
  • Нонс — предотвращает атаки повторного воспроизведения
  • Срок действия — необязательная временная метка, ограничивающая окно действия
  • Ресурсы — необязательные URI для ограниченного доступа

Библиотеки SIWE

Пример: вход на стороне клиента с помощью siwe

Пример: проверка на стороне сервера (Node.js)

Библиотеки для подключения кошелька

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

Проверка подписей вручную

Если вы предпочитаете не использовать SIWE, вы можете проверять подписи напрямую:

Важные замечания по безопасности

  • Всегда используйте нонс — это предотвращает атаки повторного воспроизведения, при которых повторно используется старая подпись
  • Включайте домен — это не позволяет подписям быть действительными на разных сайтах
  • Проверяйте срок действия — подписи должны иметь ограниченное окно действия
  • Используйте SIWE (EIP-4361), когда это возможно — он обрабатывает все вышеперечисленное за вас
  • Никогда не раскрывайте приватные ключи — подписание происходит внутри кошелька; ваше приложение видит только результат

Управление сессиями

После аутентификации вам все еще нужны сессии — так же, как и в Веб2. Распространенные паттерны:

  • Токены JWT — выдавайте JWT после проверки подписи, используйте для запросов к API
  • Сессии на стороне сервера — сохраняйте проверенный адрес в сессионном файле cookie
  • SIWE с ресурсами — определяйте токены доступа с ограниченной областью действия, привязанные к конкретным URI

Ключевое отличие от Веб2: адрес Эфириума пользователя является его постоянной идентичностью. Он может использовать его в любом dapp без создания нового аккаунта.

Децентрализованная идентичность

Аутентификация в Эфириуме является частью более широкого движения к суверенной идентичности (self-sovereign identity). Стандарты и проекты в этой области включают:

Дополнительная литература