Щойно реалізував 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, обмежувати кількість запитів і додавати інші заходи безпеки. Не варто просто копіювати приклади коду й запускати їх у реальному проекті.

Якщо ви створюєте децентралізований додаток, що потребує автентифікації користувачів, SIWE зараз майже стандартний підхід. Екосистема npm стала настільки зрілою, що інтеграція стала набагато менш болісною, ніж раніше.
ETH0,38%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • Прокоментувати
  • Репост
  • Поділіться
Прокоментувати
Додати коментар
Додати коментар
Немає коментарів
  • Закріпити