我是软件开发商,而不是密码学家。我正在寻找一种方式,客户程序员可以通过前端向我们发送经过身份验证的声明(我们提供了以浏览器为目标的JS API)。
在这些情况下,我想通常的答案是JWT。他们很好地解决了我的问题:我们客户的后端程序员可以对他们的一个用户提出一些要求,使用我们提供给他们的秘密密钥对其进行签名,通过前端将其发送出去,然后我们可以在后端验证这些要求。这很优雅,因为这意味着他们的后端与我们的后端之间没有直接的依赖关系,我们仍然可以共享经过身份验证的声明。
但是,我有两支JWT牛肉:
none
算法的资料使我担心我可能会错误地使用它们,否则我们的客户可能会这么做。因此,我在考虑反对所有“不要自行开发加密货币”建议时,JWT真正提供了HMAC不提供的什么?
即如果我让客户这样做:
令牌= base64_encode(声明)+ hmac(声明,secret_key)
那基本上就是一个JWT,没有所有的JSON或所有的复杂性,对吗?我看到很多好处:
是否有理由不这样做? JWT是否仅提供message + hmac
类型的方案提供什么?