前段时间开了一个《从零实现Lumen-JWT扩展包》的教程。
在写这篇文章之前,教程已经进行到了JWT的解析这部分。
为什么这几天没继续发教程,也是因为如题的原因。
而截止这篇文章之前,我已经完成了Lumen-JWT扩展包的开发工作,自己试了下,能用,也挺顺手。最后还剩下一些单元测试没写。
还是怪自己太年轻,觉得别人的不好用,自己造一个,想从根本上解决JWT的并发问题,这几天尝试了很多,都没有找到很好的解决办法,最后还是只有妥协。
从目前来看,个人认为JWT在HTTP请求并发这块并没有很好的解决办法,也许这真的是JWT的一个缺陷。
我还是先重新解释一些JWT在HTTP并发的时候产生问题的原因。每次请求刷新Token
每次请求成功后,返回一个新的Token(有效减少每次都要等到过期后再去刷新的次数),旧Token加入黑名单(失效)
重放攻击(Replay Attacks)
又称重播攻击、回放攻击或新鲜性攻击(Freshness Attacks),是指攻击者发送一个目的主机已接收过的包,特别是在认证的过程中,用于认证用户身份所接收的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的安全性。
前提条件是开启了每次请求刷新Token的功能,至于为什么刷新后需要让旧的Token失效,是为了避免重放攻击。
引用之前文章的话当客户端请求并发的时候,问题就来了,请求的处理完成速度肯定会有先后,当前一个请求处理完成后,Token已经刷新了,后一个请求拿着一个已经被加入黑名单的Token