JWT 签名算法 HS256 与 RS256

时间:2020-03-03 15:08:25   收藏:0   阅读:761

前言

JWT 规范的详细说明请见「参考」部分的链接。这里主要说明一下 JWT 最常见的两种签名算法:HS256(HMAC-SHA256) 和 RS256(RSA-SHA256)。

HS256 和 RS256 都是一种消息签名算法,得到的都只是一段无法还原的签名。区别在于消息签名签名验证需要的 「key」不同。

  1. HS256 使用同一个「secret_key」进行签名与验证。一旦 secret_key 泄漏,就毫无安全性可言了。
    • 因此 HS256 只适合集中式认证,签名和验证都必须由可信方进行。
  2. RS256 是使用 RSA 私钥进行签名,使用 RSA 公钥进行验证。公钥即使泄漏也毫无影响,只要确保私钥安全就行。
    • RS256 可以将验证委托给其他应用,只要将公钥给他们就行。

对于单体应用而言,HS256 和 RS256 的安全性没有任何差别。
而对于需要进行多方验证的微服务架构而言,显然 RS256 安全性更高。
只有 user 微服务需要用 RSA 私钥生成 JWT,其他微服务使用公钥即可进行签名验证,私钥得到了更好的保护。

参考

原文:https://www.cnblogs.com/kirito-c/p/12402066.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!