实施JWT Auth服务

时间:2020-05-10 12:32:19

标签: java spring-boot authentication jwt

我正在尝试实施RSA JWT身份验证服务。我已经关注了这里的其他帖子,但是不确定我创建的服务是否真正安全。

让我安排一下流程:

  1. 客户端点击身份验证服务并通过身份验证
  2. 创建RSA公钥/私钥。
  3. 使用私钥生成JWT签名。
  4. 使用JWT以及以前生成的公钥对用户进行回复
  5. 客户持有JWT
  6. 客户端在HTTP标头中发送JWT和公钥以分离受保护的服务。
  7. 受保护的服务使用公共密钥来解密JWT

我的担忧是:

  1. 如果HTTP请求具有解密JWT所需的所有信息,那么这是否意味着有人可以使用它来访问受保护的服务?

  2. 我对RSA加密的理解是2个参与方都生成了自己的公用/专用密钥。他们交换公钥。一个使用他人的公共密钥进行加密,只能使用相应的私有密钥进行解密。这意味着只有正确的客户端才能读取信息。 在这种情况下不会发生这种情况

1 个答案:

答案 0 :(得分:0)

在JWT中必须清楚一点,公钥是允许您将令牌解密回数据的对象,而私钥是可以进行解密和加密(即从数据生成JWT)的东西。

因此,使用JWT的想法是您不需要每次都从客户端获取公钥/私钥。您可以将它们保留在后端。客户端通过身份验证后,您只需将JWT提供给客户端。大多数情况下,此JWT存储在客户端的会话(或cookie)中。然后,客户端每次都会通过要求身份验证的请求发送该JWT。服务器具有公用/专用密钥来解密JWT并验证请求是否真实。

这只是一个非常基本的工作,但我希望它可以帮助清除问题。