是否可以在不使用框架的情况下在 Node.js 中创建 JWT 身份验证或类似的东西?

时间:2021-02-14 09:04:20

标签: node.js authentication jwt no-framework

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

谢谢

1 个答案:

答案 0 :(得分:1)

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

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

第一步,您应该熟悉 JWT 的基础知识,例如借助此introduction并阅读RFC7519

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

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

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

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

所以基本上你需要学习:

  • 哪些信息会进入 JWT 标头和负载(即 claims
  • 如何base64url对字符串或字节数组进行编码
  • 如何创建SHA256 hash
  • 如何使用散列算法创建 HMAC

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

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

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

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