Только что реализовал SIWE для проекта и хотел поделиться тем, что я узнал, поскольку процесс на самом деле довольно прост, как только понимаешь основную концепцию.



Итак, вот что такое Sign-In with Ethereum — это в основном способ подтвердить, что у вас действительно есть кошелек. Когда вы подключаете свой кошелек к децентрализованному приложению, фронтенд знает, кто вы, но бэкенд не может проверить, что вы не просто кто-то, претендующий на этот адрес. SIWE решает это, заставляя вас подписать сообщение, что доказывает владение. Это похоже на то, как работают транзакции — вы подписываете что-то своим приватным ключом.

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

Теперь, не каждое децентрализованное приложение нуждается в SIWE. Если вы создаете что-то вроде блок-эксплорера, где пользователи просто запрашивают публичные данные, оно вам не нужно. Но если у вашего приложения есть учетные записи пользователей или оно обрабатывает чувствительные данные, SIWE становится очень ценным.

Я использовал Next.js для реализации полного стека, так как можно обрабатывать как фронтенд, так и бэкенд в одном проекте. Начал с npm-пакетов, таких как Ant Design Web3 и Wagmi — они берут на себя большую часть работы. Можно установить основные зависимости через npm одной командой, что значительно экономит время на настройку.

Процесс подписи включает получение nonce с вашего бэкенда сначала. Этот nonce уникален для каждого адреса и предотвращает повторные атаки. Затем вы формируете сообщение, которое включает nonce, домен и ID цепочки, подписываете его своим кошельком и отправляете всё обратно на бэкенд для проверки. Если подпись действительна, вы получаете JWT-токен для последующих запросов.

Одна вещь, которую я заметил — использование стандартных RPC-нод делает проверку примерно 30 секунд, что очень плохо для UX. Переключение на выделенный сервис нод (я использовал ZAN) значительно сократило это время. Оптимизация определенно стоит того, если вы планируете запускать в продакшн.

Важно учитывать предупреждение из документации: предоставляемый демонстрационный код — учебный пример. Для продакшна нужно правильно обрабатывать JWT, ограничивать частоту запросов и использовать другие меры безопасности. Не стоит просто копировать примерный код и запускать его в реальной среде.

Если вы создаете dapp, требующее аутентификации пользователей, SIWE сейчас практически стал стандартным подходом. Экосистема npm созрела настолько, что интеграция стала намного проще и менее болезненной, чем раньше.
ETH-0,32%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • комментарий
  • Репост
  • Поделиться
комментарий
Добавить комментарий
Добавить комментарий
Нет комментариев
  • Закрепить