【问题标题】:When to use RS256 for JWT?何时为 JWT 使用 RS256?
【发布时间】:2018-09-08 19:06:11
【问题描述】:

所以,现在我正在构建一个供第三方使用的 API,我正在阅读有关 RS256 和 HS256 的信息。我的理解是,在第一个中,您使用公钥进行验证,使用私钥进行签名,而另一个只使用一个密钥。因此,如果您使用 RS256,如果您想保留您的密钥安全并希望客户端验证令牌,但我不明白您为什么要在客户端验证令牌?因为您向服务器发出了一个 post 请求,所以它会向您发送一个令牌,每当您想要发出授权请求时,您只需使用该令牌,服务器会验证它并让您继续(如果没问题)。那么,为什么要在客户端验证令牌?我认为这是后端的职责。

我想我可能有问题,希望你能帮助解决这个问题。谢谢。

编辑:

所以,我的问题是,我知道 RS256 和 HS256 之间的区别,但我不明白它是如何使用它的流程。现在我正在开发第三方 api,我只需要在客户端请求时返回一个令牌,然后在需要它的请求中,只需从服务器验证它是否是一个有效的令牌。据我了解,当您想从客户端验证令牌时使用 RS256,如果正确,有人可以给我一个示例,说明您何时或为什么要在客户端验证令牌?

【问题讨论】:

  • 你的句子“所以我不明白你为什么要在客户端验证令牌?”没有任何意义,因为它与您之前所说的无关。编辑您的问题并更清楚地说明您想要做什么以及您的问题是什么。
  • @Robert 我编辑了,希望你现在可以理解了。

标签: cryptography jwt rsa digital-signature hmac


【解决方案1】:

在以下情况下使用 RS256:

  • 令牌由第三方签名,通常是身份提供者(例如 oauth2/oidc),您需要验证令牌是由受信任的实体颁发的

  • 令牌由客户端签名,通常是为了访问 API,客户端之前已在其中注册了公钥

  • 令牌由 SingleSignOn 系统中的集中式身份验证服务器签名,它们用于访问多个联合服务器

  • 令牌用于在两方之间传输数据,不一定用于身份验证,并且签名用于确保签名人的身份

在以下情况下使用 HS256:

  • 令牌由同一台服务器签名和验证

【讨论】:

  • 那么关于客户签名的令牌,这就是facebook、stripe等第三个api的作用?他们给你一个公开和秘密,所以你可以在你的服务器中生成令牌来访问 API,而不是向他们的服务器询问访问权限?
  • 我不知道这些 api 究竟是如何工作的,但是当您使用非对称密钥时,您会在设备中生成私钥和公钥对,私钥存储在本地,公钥存储在本地在注册过程中发送到服务器。第三方服务器不会将密钥发送给您。要进行身份验证,您需要生成一个令牌并使用私钥对其进行签名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-04
  • 2021-05-10
  • 2020-04-18
  • 2018-11-08
  • 2021-01-04
  • 2021-11-01
  • 2018-02-03
相关资源
最近更新 更多