# SIWE:提升 Dapp 身分驗證能力的利器SIWE(Sign-In with Ethereum)是一種在以太坊上驗證用戶身分的方法,類似於發起交易,證明用戶對錢包的控制權。目前,身分驗證過程已經非常簡化,只需在錢包插件中對信息進行籤名即可,大多數常見錢包插件都已支持這一功能。本文主要探討以太坊上的籤名場景,不涉及其他區塊鏈如Solana、SUI等。## 何時需要SIWE如果你的Dapp具有以下特徵,可以考慮使用SIWE:- 擁有獨立的用戶系統- 需要查詢與用戶隱私相關的信息對於主要功能是查詢的應用,如區塊瀏覽器,可以不使用SIWE。雖然在Dapp上連接錢包後似乎已經證明了身分,但這只對前端有效。對於需要後端支持的接口調用,僅傳遞地址是不夠的,因爲地址是公開信息,容易被冒用。## SIWE的工作原理SIWE的流程可概括爲三個步驟:連接錢包、籤名、獲取身分標識。1. 連接錢包:通過錢包插件在Dapp中連接用戶錢包。2. 籤名: - 獲取Nonce值:調用後端接口獲取隨機生成的Nonce值。 - 錢包籤名:構建包含Nonce值、域名、鏈ID等信息的籤名內容,使用錢包提供的方法進行籤名。 - 發送籤名:將籤名發送給後端進行驗證。3. 獲取身分標識: 後端驗證籤名通過後,返回用戶身分標識(如JWT)。後續請求中帶上地址和身分標識,即可證明錢包所有權。## 實踐指南本文使用Next.js開發全棧應用,集成SIWE功能。以下是主要步驟:1. 安裝依賴: 使用create-next-app創建項目,並安裝SIWE相關依賴。2. 引入Wagmi: 在layout.tsx中引入WagmiProvider,配置SIWE相關接口。3. 添加連接按鈕: 實現連接錢包和籤名的按鈕組件。4. 接口實現: - Nonce生成:創建隨機字符串並與地址關聯。 - 籤名驗證:後端驗證籤名內容,檢查Nonce值,生成JWT。5. 優化: 建議使用專門的節點服務(如ZAN)提升接口響應速度。通過以上步驟,即可實現一個基本的SIWE登入框架,爲Dapp提供更安全、可靠的身分驗證機制。
SIWE:以太坊身分驗證新標準 提升Dapp安全性與用戶體驗
SIWE:提升 Dapp 身分驗證能力的利器
SIWE(Sign-In with Ethereum)是一種在以太坊上驗證用戶身分的方法,類似於發起交易,證明用戶對錢包的控制權。目前,身分驗證過程已經非常簡化,只需在錢包插件中對信息進行籤名即可,大多數常見錢包插件都已支持這一功能。
本文主要探討以太坊上的籤名場景,不涉及其他區塊鏈如Solana、SUI等。
何時需要SIWE
如果你的Dapp具有以下特徵,可以考慮使用SIWE:
對於主要功能是查詢的應用,如區塊瀏覽器,可以不使用SIWE。
雖然在Dapp上連接錢包後似乎已經證明了身分,但這只對前端有效。對於需要後端支持的接口調用,僅傳遞地址是不夠的,因爲地址是公開信息,容易被冒用。
SIWE的工作原理
SIWE的流程可概括爲三個步驟:連接錢包、籤名、獲取身分標識。
連接錢包:通過錢包插件在Dapp中連接用戶錢包。
籤名:
獲取身分標識: 後端驗證籤名通過後,返回用戶身分標識(如JWT)。後續請求中帶上地址和身分標識,即可證明錢包所有權。
實踐指南
本文使用Next.js開發全棧應用,集成SIWE功能。以下是主要步驟:
通過以上步驟,即可實現一個基本的SIWE登入框架,爲Dapp提供更安全、可靠的身分驗證機制。