在我看来,JWT的主要优点是任何客户都可以阅读声明并验证您是否是生成它们的人。但是,如果您使用对称密钥来计算签名,那么客户端必须知道您的签名密钥以验证JWT,此时他们可以生成他们想要的任何声明。为什么有人会在非对称算法上选择对称算法?
一个用户answer对另一个问题说:
对称密钥只能以对等方式使用,因此接收方修改JWT是没有意义的,只有他和发件人才有共享密钥
如果通信是点对点的,那么他们必须在某个时候使用安全协议来交换密钥,那么在这种情况下JWT的用途是什么?
我之所以这样说是因为我在ASP.Net中看到的用于实现基于JWT的安全性的大多数示例都使用了对称密钥。
答案 0 :(得分:0)
令牌不必总是由客户端验证。
例如,在基本的Asp.Net应用程序中,服务器同时充当身份验证服务器和授权服务器:
在此示例中,如果客户端通过单独的方式(例如TLS / SSL)验证服务器的真实性,则客户端不需要验证服务器返回的令牌。在这种情况下,使用对称加密算法的服务器没有问题。