JWT 何时使用 RS256?

When to use RS256 for JWT?

所以,现在我正在构建供第三方使用的 API,并且我正在阅读有关 RS256 和 HS256 的信息。我的理解是,两者之间的区别在于,在第一个中,您使用 public 密钥进行验证,并使用私钥进行签名,而另一个则仅使用一个密钥。所以如果您使用 RS256,因为您想保护您的密钥安全并希望客户端验证令牌,但我不明白您为什么要在客户端验证令牌?因为你向服务器发出 post 请求,然后它会发回一个令牌给你,每当你想发出授权请求时,你只需使用该令牌,服务器会验证它,如果没问题就让你继续。那么,为什么要在客户端验证令牌呢?我以为这是后端的职责。

我想也许我在某些地方错了,希望你能帮助解决这个问题。谢谢。

编辑:

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

在以下情况下使用 RS256:

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

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

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

  • 令牌用于在双方之间传输数据,不一定用于身份验证目的,签名用于确保签名者的身份

在以下情况下使用 HS256:

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