提问者:小点点

实现JWT身份验证服务


我正在尝试实现一个RSAJWT身份验证服务。我在这里跟随了其他帖子,但我不确定我创建的服务是否真正安全。

让我来展示一下流程:

  1. 客户端访问身份验证服务并通过身份验证
  2. 创建RSA公钥/私钥。
  3. 使用私钥生成JWT签名。
  4. 使用JWT以及先前生成的公钥响应用户
  5. 客户端持有JWT
  6. 客户端将HTTPHeader中的JWT和公钥发送到单独的受保护服务。
  7. 受保护的服务使用公钥解密JWT

我的关切是:

>

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

    我对RSA加密的理解是两方生成自己的公钥/私钥。他们交换公钥。一方使用另一方的公钥进行加密,只能由相应的私钥解密。这意味着只有正确的客户端才能读取信息。这不是在这种情况下发生的事情


  • 共1个答案

    匿名用户

    JWT要明确的是,公钥允许您将令牌解密回数据,私钥允许您解密和加密,即从数据中生成JWT。

    所以使用JWT的想法是,你不需要每次都从客户端获得公钥/私钥。你把它们保存在后端。一旦客户端通过身份验证,你只需向客户端提供JWT。大多数时候,这个JWT存储在客户端的会话(或cookie)中。然后客户端每次都发送需要身份验证的请求JWT。服务器有公钥/私钥来解密JWT并验证请求是否真实。

    这只是一个非常基本的工作,但我希望它有助于澄清问题。