Baru saja menerapkan SIWE untuk sebuah proyek dan ingin berbagi apa yang saya pelajari karena prosesnya sebenarnya cukup sederhana setelah memahami konsep inti.



Jadi begini tentang Sign-In with Ethereum - ini pada dasarnya adalah cara untuk memverifikasi bahwa Anda benar-benar memiliki alamat dompet. Ketika Anda menghubungkan dompet Anda ke dapp, frontend tahu siapa Anda, tetapi backend tidak punya cara untuk memverifikasi bahwa Anda bukan hanya seseorang yang mengaku sebagai alamat tersebut. SIWE menyelesaikan ini dengan meminta Anda menandatangani sebuah pesan, yang membuktikan kepemilikan. Ini mirip dengan cara kerja transaksi - Anda menandatangani sesuatu dengan kunci pribadi Anda.

Prosesnya terbagi menjadi tiga langkah utama: hubungkan dompet, tandatangani pesan, lalu dapatkan token identitas. Alur yang cukup bersih setelah dipahami.

Sekarang, tidak semua dapp membutuhkan SIWE. Jika Anda membangun sesuatu seperti penjelajah blok di mana pengguna hanya mengquery data publik, Anda tidak benar-benar membutuhkannya. Tetapi jika dapp Anda memiliki akun pengguna atau menangani data sensitif, SIWE menjadi cukup berharga.

Saya akhirnya menggunakan Next.js untuk implementasi full-stack karena Anda bisa menangani frontend dan backend dalam satu proyek. Mulai dengan paket npm seperti Ant Design Web3 dan Wagmi - mereka menangani banyak pekerjaan berat. Anda bisa menginstal dependensi inti melalui npm dengan satu perintah, yang menghemat banyak waktu setup.

Alur penandatanganan melibatkan mendapatkan nonce dari backend Anda terlebih dahulu. Nonce ini unik untuk setiap alamat dan mencegah serangan replay. Kemudian Anda menyusun pesan yang mencakup nonce, domain, dan chain ID, menandatanganinya dengan dompet Anda, dan mengirim semuanya kembali ke backend untuk diverifikasi. Jika tanda tangan valid, Anda akan mendapatkan token JWT untuk permintaan selanjutnya.

Satu hal yang saya perhatikan - menggunakan node RPC default membuat verifikasi memakan waktu sekitar 30 detik, yang sangat buruk untuk pengalaman pengguna. Beralih ke layanan node khusus (saya pakai ZAN) memotong waktu itu secara drastis. Sangat layak dilakukan jika Anda akan ke produksi.

Catatan keamanan dari dokumentasi penting: kode demo yang mereka berikan bersifat edukatif. Untuk produksi, Anda membutuhkan penanganan JWT yang tepat, pembatasan laju, dan perlindungan lainnya. Jangan sekadar menyalin-tempel kode contoh ke dalam produksi.

Jika Anda membangun dapp yang membutuhkan otentikasi pengguna, SIWE sekarang hampir menjadi pendekatan standar. Ekosistem npm sudah cukup matang sehingga integrasi jauh lebih tidak menyakitkan daripada dulu.
ETH0,27%
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
Tambahkan komentar
Tambahkan komentar
Tidak ada komentar
  • Sematkan