JWT优于纯消息+ HMAC?

时间:2018-07-25 17:18:06

标签: cryptography jwt api-design hmac

我是软件开发商,而不是密码学家。我正在寻找一种方式,客户程序员可以通过前端向我们发送经过身份验证的声明(我们提供了以浏览器为目标的JS API)。

在这些情况下,我想通常的答案是JWT。他们很好地解决了我的问题:我们客户的后端程序员可以对他们的一个用户提出一些要求,使用我们提供给他们的秘密密钥对其进行签名,通过前端将其发送出去,然后我们可以在后端验证这些要求。这很优雅,因为这意味着他们的后端与我们的后端之间没有直接的依赖关系,我们仍然可以共享经过身份验证的声明。

但是,我有两支JWT牛肉:

  1. 很少有语言内置支持,因此您需要安装一些库来实现,并希望它能很好地实现。
  2. JWT最近因其复杂性而受到了不好的评价,我倾向于对此表示赞同,因为我认为它们也非常复杂。关于none算法的资料使我担心我可能会错误地使用它们,否则我们的客户可能会这么做。

因此,我在考虑反对所有“不要自行开发加密货币”建议时,JWT真正提供了HMAC不提供的什么?

即如果我让客户这样做:

令牌= base64_encode(声明)+ hmac(声明,secret_key)

那基本上就是一个JWT,没有所有的JSON或所有的复杂性,对吗?我看到很多好处:

  1. 许多语言都内置了对HMAC-SHA256等的支持,足以保证加密实现的质量。
  2. 而且,它通常是单线的。告诉客户“复制并粘贴此行代码”比告诉客户“安装此复杂的库并希望它能工作”更具吸引力。
  3. 与JWT复杂性无关的风险。

是否有理由这样做? JWT是否仅提供message + hmac类型的方案提供什么?

0 个答案:

没有答案