何时使用RS256进行JWT?

时间:2018-03-29 18:09:32

标签: cryptography jwt rsa digital-signature hmac

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

我想也许我错了什么,希望你帮忙解决这个问题。感谢。

修改

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

1 个答案:

答案 0 :(得分:11)

在以下时间使用RS256:

  • 令牌由第三方签署,通常是身份提供商(例如oauth2 / oidc),您需要验证令牌是否已由可信实体发出

  • 令牌由客户签名,通常用于访问客户以前已注册公钥的API

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

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

在以下情况下使用HS256:

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