我正在尝试实现一个RSAJWT身份验证服务。我在这里跟随了其他帖子,但我不确定我创建的服务是否真正安全。
让我来展示一下流程:
我的关切是:
>
如果HTTP请求具有解密JWT所需的所有信息,那么这是否意味着任何人都可以使用它来访问受保护的服务?
我对RSA加密的理解是两方生成自己的公钥/私钥。他们交换公钥。一方使用另一方的公钥进行加密,只能由相应的私钥解密。这意味着只有正确的客户端才能读取信息。这不是在这种情况下发生的事情
JWT要明确的是,公钥允许您将令牌解密回数据,私钥允许您解密和加密,即从数据中生成JWT。
所以使用JWT的想法是,你不需要每次都从客户端获得公钥/私钥。你把它们保存在后端。一旦客户端通过身份验证,你只需向客户端提供JWT。大多数时候,这个JWT存储在客户端的会话(或cookie)中。然后客户端每次都发送需要身份验证的请求JWT。服务器有公钥/私钥来解密JWT并验证请求是否真实。
这只是一个非常基本的工作,但我希望它有助于澄清问题。