通常在登入“web2”服務時,我們需要使用用戶名或電子郵件地址和密碼。然后,該服務可以在他們的內部資料庫中查找我們的用戶名或電子郵件地址,看看相應的密碼是否與我們提供的密碼匹配,生成用于進一步身份驗證的隨機密鑰,通常存儲在cookie中,
一個新的規范EIP-4361:用以太坊登入,希望通過使用web3服務(如錢包和dapps)常用的方法來改變我們登入web2服務的方式,
它是如何工作的?
EIP-4361描述了使用簽名消息的現有web2服務的身份驗證方法。用戶可以使用自己的私鑰(帶有相應的地址)進行身份驗證,而不是使用用戶名和密碼的組合,例如,可以使用自己的私鑰對這樣的消息進行簽名:
Example.com wants you to sign in with your Ethereum account:
0x4bbeEB066eD09B7AEd07bF39EEe0460DFa261520
URI: https://example.com/login
Version: 1
Chain ID: 1
Nonce: 12345
Issued At: 2021-11-01T12:25:24Z
在MyCrypto上簽署身份驗證消息,
EIP-4361使用增強的Backus-Naur表單(ABNF)為這些身份驗證消息定義了一種標準化格式,想要登入的服務可以對這些消息進行驗證。該格式遵循EIP-191規范,該規范已經得到許多錢包的廣泛支持,登入不需要密碼,只需用私鑰對消息進行簽名,就完成了,服務器可以驗證消息并生成密鑰存儲在cookie中,
使用ENS分散數據
EIP-4361與以太坊名稱服務(ENS)巧妙集成。如果一個地址有一個主ENS名稱(也稱為反向記錄)集,服務可以查找這個主ENS名稱并基于它解析數據。例如,可以將自己的首選用戶名、頭像、電子郵件地址或其他任意資訊存儲在ENS名稱中,ENS還允許用戶指定其他網路的地址,如比特幣和萊特幣:
與ENS名稱相關的一些可能的字段。
這樣就可以控制自己的數據,并且不需要web2服務來存儲關于用戶的這些資訊,這可能會導致未來使用經過身份驗證、簽名的EIP-191消息登入到身份驗證的應用程式成為標準,完全消除電子郵件/密碼組合。
這個模型本質上是一個去中心化的、100%正常運行的、用戶數據所有的“Gravatar”,數據不是由一個私有實體持有,而是發布到以太坊區塊鏈供應用程式使用,用戶將在多個應用程式中擁有一個身份,所有應用程式都通過用戶的簽名錢包進行身份驗證,