前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JWT和HMAC(AK/SK)认证方式的区别和使用场景

JWT和HMAC(AK/SK)认证方式的区别和使用场景

作者头像
Steve Wang
发布2022-04-13 14:19:37
3K0
发布2022-04-13 14:19:37
举报
文章被收录于专栏:从流域到海域

prerequisite: 什么是JWT?

JWT适用场景

  1. 用户登录:用户通过密码换取jwt,后续使用jwt继续交互,以实现一次登录访问全部资源的目的。
  2. 简单实体认证:由服务方直接分发一个生成的jwt给使用方,使用方每次使用jwt方位服务的接口。这种方式长用户接口之间的实体认证,但安全性较弱,因为其他方如果获知了jwt token,也依然能够通过该token访问接口。

HMAC(AK/SK)

简单介绍一下HMAC

HMAC(Hash-based Message Authentic Code),即基于hash的消息认证码,它使用哈希算法,以一个密钥和一个消息作为输入,生成一个消息摘要作为输出,服务端通过对比发送的摘要和自己生成的摘要是否相同完成认证。

HMAC(AK/SK) HMAC预先生成一个access key(AK)和secure key(SK),然后客户端通过使用AK和SK以及可能存在的偏移量iv对一段消息文本进行签名,客户端发送AK和签名,服务端使用AK和SK以及偏移量iv重新签名,通过对比两个签名是否一致的方式完成认证请求。这种方式避免传输secure key,且大多数情况下只允许使用一次,避免了重放攻击。

JWT和HMAC的区别
  • HMAC服务端不仅有一个密钥,同时每一个调用实体都分发一个appid(AK)
  • 用来签名的数据可以由调用双方约定,简单可以使用字符串,也可以使用map、array等其他数据类型
  • 签名过程可以带上时间戳,这样每次调用的签名都不一样,安全性高
  • 签名是根据约定好的算法进行计算,不需要客户端获取token之后一直传递token,但每次调用都要进行签名,没有jwt计算轻量。

HMAC

适合api之间相互调用的认证

JWT使用HMAC签名

事实上两种方式经常结合使用,因为jwt的签名过程本质上和HMAC一样,都是进行一次hash计算。

方式一:jwt的签名过程中使用HMAC加密算法,后续持续使用token鉴权(token具有时效性,可以短时间内持续有效),这样既保证了安全,也不会有每调用一次就需要重新签名这样重复的计算量。

方式二:获取jwt签名后的token之后,在使用HMAC算法对该token进行签名,这样可以实现跨系统调用。

参考文献

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JWT适用场景
  • HMAC(AK/SK)
    • JWT和HMAC的区别
    • HMAC
    • JWT使用HMAC签名
    • 参考文献
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档