我正在尝试实施RSA JWT身份验证服务。我已经关注了这里的其他帖子,但是不确定我创建的服务是否真正安全。
让我安排一下流程:
我的担忧是:
如果HTTP请求具有解密JWT所需的所有信息,那么这是否意味着有人可以使用它来访问受保护的服务?
我对RSA加密的理解是2个参与方都生成了自己的公用/专用密钥。他们交换公钥。一个使用他人的公共密钥进行加密,只能使用相应的私有密钥进行解密。这意味着只有正确的客户端才能读取信息。 在这种情况下不会发生这种情况
答案 0 :(得分:0)
在JWT中必须清楚一点,公钥是允许您将令牌解密回数据的对象,而私钥是可以进行解密和加密(即从数据生成JWT)的东西。
因此,使用JWT的想法是您不需要每次都从客户端获取公钥/私钥。您可以将它们保留在后端。客户端通过身份验证后,您只需将JWT提供给客户端。大多数情况下,此JWT存储在客户端的会话(或cookie)中。然后,客户端每次都会通过要求身份验证的请求发送该JWT。服务器具有公用/专用密钥来解密JWT并验证请求是否真实。
这只是一个非常基本的工作,但我希望它可以帮助清除问题。