收藏本站 网站导航 开放平台 Monday, December 6, 2021 星期一

Web3 就在眼前,你再也不需要 JWT

来源 中金网 10-25 14:58
摘要: JWT 是 JSON web Token 的简称,本质是一个 token ,是一种紧凑的 URL 安全方法,用于在网络通信的双方之间传递。以下为原文。

  区块天眼APP讯 : JWT 是 JSON web Token 的简称,本质是一个 token ,是一种紧凑的 URL 安全方法,用于在网络通信的双方之间传递。以下为原文。

  一个使用签名信息用 web3 验证用户的简单方法

  以太坊登录很快就会成为用户标准,不再需要密码,这已经不是什么新鲜事了。尽管如此,dApp 开发仍然是一个相当新的赛道,其开发的许多标准仍在设定之中。

  现在,所有的开发者都在延续用传统做法编写 dApp ,本能地使用相同的 JWT 进行认证。我这里提出一个稍微不同的方法。

  我自己也开始使用 JWT 开发 dApp 。从第一个项目开始,我就觉得认证总是变得很棘手,而且在这个过程中一定有些多余的东西。在几个项目之后,我意识到 JWT 本身就是多余的。让我解释一下原因:

  这张图显示了我在前几个项目中是如何进行认证的。这里的方案几乎完全复制了 JWT 的标准程序,唯一的一点是,用户发送的不是登录和密码,而是签名。

  为什么我们需要得到 JWT 呢?毕竟,即使没有它,你也可以通过从用户的签名中获取地址来可靠地识别身份。

  下面是如何简化的:

  使用 web3-token 的认证流程

  用户依旧会产生一个签名,但里面有了一个过期日期,所以即便攻击者得到了这个签名,也持续不了多久(和 JWT 一样)。此外,签名被放在标准的授权头中,并在服务器上通过获取用户的地址和在数据库中找到用户来处理。这就是全部。你不需要在服务器上不断地更新 JWT 的加密密钥,所以通常来说,服务器承担了绝大部分职责。

  为了进一步简化这一流程,我制作了 web3-token 模块。要安装它,请使用以下命令。

  1

  $ npm i web3-token

  这个模块既可以用在服务器上,也可以用在客户端。

  让我们看一个例子,从客户端开始:

  调用 .sign 方法后,你会看到与此类似的东西( 如果你使用的是 MetaMask )。

  MetaMask提醒去签署令牌

  正如你所看到的,该信息对用户来说是完全透明的,因为他们必须看到他们正在签署的东西。因此,我决定不使用 JSON 结构来提高可读性,而是使用与 HTTP 头相同的结构。

  在消息的正文中,我们可以看到令牌的版本和过期日期。

  接下来,这里是后端(Node.js)对这个令牌的处理。

  这很简单,只有一行,模块会处理所有加密问题。我们则可以从签名中获得用户的地址,并使用这个地址在数据库中找到他们。举个例子,然后你就可以通过他的地址授予这个用户一个 NFT 。

  最终我们得到了一个非常方便的无状态用户认证方法,这也是混合型 dApp 的理想选择。唯一的缺点是,它很难在 Postman 中测试。

更多区块链消息,请关注下载区块天眼APP,全球区块链监管查询APP 。

区块链
免责声明:中金网发布此信息目的在于传播更多信息,与本网站立场无关。中金网不保证该信息的准确性、真实性、完整性、有效性等。相关信息并未经过本网站证实,不构成任何投资建议,据此操作,风险自担。
相关新闻 更多

天眼合约日报 | 本次暴跌导致BTC链上已实现损失超过21.8亿美元 创历史第三高

最新分析数据显示,上周末的市场暴跌导致比特币链上已实现损失超过21.8亿美元,为BTC链上第三大已实现损失。

38分钟前

灰度动态丨灰度上周增持SOL、MANA

根据灰度官方推特12月4日公布的数据显示,截至12月3日灰度的总资产管理规模进一步下降至513亿美元。

1小时前

区块链50收评 | 区块链50指数跌 0.39% 成分股仅 13只收红

今日午后两市指数双双跳水翻绿,其中创业板指持续下探跌超2%,回补了下方缺口,而科创50指数同样大跌,跌幅达2.7%。

2小时前
天眼经纪商 更多
天眼交易所 更多
猜你喜欢