【问题标题】:Is there a benefit to performing JWT operations as async?以异步方式执行 JWT 操作有什么好处?
【发布时间】:2019-07-04 20:42:36
【问题描述】:

我正在使用非常流行的 jsonwebtoken 包作为节点。签名和验证通常是同步执行的,但也提供了异步选项。

我认为所涉及的操作既不是数据绑定的,也不是计算量大的,因此不存在给主/用户线程带来负担的风险。我没有看到性能优势。

那么为什么要异步执行这些操作 - 有什么好处?

【问题讨论】:

  • 异步调用有好处。有时它会花费更多时间,并且您可能会在生成 JWT 之前点击请求。我已经遇到过类似的问题,通过使用异步调用生成 JWT 解决了这个问题
  • @NipunChawla 这很有趣......你是什么意思点击请求?
  • @Ionix 我正在使用 JWT 令牌调用 http 请求进行身份验证。但是很多请求都失败了,因为没有生成相应的 JWT,导致请求返回 401
  • @NipunChawla 有趣...

标签: node.js asynchronous hash cryptography jwt


【解决方案1】:

查看包源代码,异步回调(验证令牌时)的唯一原因似乎是以异步方式提供密钥/公钥:

if(typeof secretOrPublicKey === 'function') {
  if(!callback) {
    return done(new JsonWebTokenError('verify must be called asynchronous if secret or public key is provided as a callback'));
  }

  getSecret = secretOrPublicKey;
}

https://github.com/auth0/node-jsonwebtoken/blob/da8f55c3c7b4dd0bfc07a2df228500fdd050242a/verify.js#L73

【讨论】:

  • 没有性能优势我是否正确?据我回忆,所有节点的加密函数都是同步的,我假设这个库无论如何都使用这些加密函数。
  • 你是对的.... jwa 包(它使用的)中的签名/验证代码似乎都是同步的。甚至使用的加密方法(nodejs.org/api/crypto.html)都是同步的。它们没有异步变体。
  • 感谢您的确认
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 1970-01-01
  • 1970-01-01
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
相关资源
最近更新 更多