gpt4 book ai didi

java - 实现 JWT 身份验证服务

转载 作者:行者123 更新时间:2023-12-01 16:49:51 26 4
gpt4 key购买 nike

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

让我列出流程:

  1. 客户端访问身份验证服务并通过身份验证
  2. 创建 RSA 公钥/私钥。
  3. 使用私钥生成 JWT 签名。
  4. 使用 JWT 以及之前生成的公钥响应用户
  5. 客户持有 JWT
  6. 客户端在 HTTP header 中发送 JWT 和公钥以分离 protected 服务。
  7. protected 服务使用公钥来解密 JWT

我担心的是:

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

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

最佳答案

需要明确的是,在 JWT 中,公钥允许您将 token 解密回数据,而私钥则允许您解密和加密,即从数据生成 JWT。

因此,使用 JWT 的想法是您不需要每次都需要客户端的公钥/私钥。您将它们保留在后端。一旦客户端通过身份验证,您只需将 JWT 提供给客户端即可。大多数时候,这个 JWT 存储在客户端的 session (或 cookie)中。然后,客户端每次都会发送该 JWT 以及需要身份验证的请求。服务器拥有用于解密 JWT 并验证请求是否真实的公钥/私钥。

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

关于java - 实现 JWT 身份验证服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61712028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com