JWT 签名算法 HS256 与 RS256
时间:2020-03-03 15:08:25
收藏:0
阅读:761
前言
JWT 规范的详细说明请见「参考」部分的链接。这里主要说明一下 JWT 最常见的两种签名算法:HS256(HMAC-SHA256) 和 RS256(RSA-SHA256)。
HS256 和 RS256 都是一种消息签名算法,得到的都只是一段无法还原的签名。区别在于消息签名与签名验证需要的 「key」不同。
- HS256 使用同一个「secret_key」进行签名与验证。一旦 secret_key 泄漏,就毫无安全性可言了。
- 因此 HS256 只适合集中式认证,签名和验证都必须由可信方进行。
- RS256 是使用 RSA 私钥进行签名,使用 RSA 公钥进行验证。公钥即使泄漏也毫无影响,只要确保私钥安全就行。
- RS256 可以将验证委托给其他应用,只要将公钥给他们就行。
对于单体应用而言,HS256 和 RS256 的安全性没有任何差别。
而对于需要进行多方验证的微服务架构而言,显然 RS256 安全性更高。
只有 user 微服务需要用 RSA 私钥生成 JWT,其他微服务使用公钥即可进行签名验证,私钥得到了更好的保护。
参考
原文:https://www.cnblogs.com/kirito-c/p/12402066.html
评论(0)