-1

我正在创建一个网站,我知道最好的身份验证是通过 JWT,但我不喜欢框架,因为我喜欢深入研究代码并理解我文件中的所有代码。因此,我在问是否有人在纯 Node.js 中做过它或类似的事情,是否可以给我一个关于如何做到这一点的解释。

谢谢

4

1 回答 1

1

是的,这当然是可能的,只要考虑框架是如何制作的。没有魔法,只有知识和大量的javascript代码。

您可以在 Github 上找到大多数框架的来源并在那里进行研究。

第一步,您应该熟悉 JWT 的基础知识,例如借助本介绍和阅读RFC7519

您会发现,JWT 基本上由 base64url 编码的 JSON 对象和 base64url 编码的签名组成。

最简单的签名算法是 HS256(HMAC-SHA256)。

jwt.io 调试器窗口中,您会在右栏中看到用于创建 JWT 签名的伪代码:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret
)

所以基本上你需要学习:

  • 什么信息进入 JWT 标头和有效负载(即声明
  • 如何base64url编码字符串或字节数组
  • 如何创建SHA256 哈希
  • 如何使用散列算法创建HMAC

有了这个,你已经有了一个基本的 JWT 框架,可以让你创建一个签名的令牌并验证签名。

在下一步中,您可以添加“功能”,例如

  • 验证到期时间
  • 发行人、受众的验证
  • 高级签名算法。

您可以使用jwt.io 调试器来检查您的令牌是否可以被解码和验证。

于 2021-02-14T09:50:40.010 回答