问答 谈谈朋友圈中某书作者没有弄清 jwt 与 session 的关系

qianxing · 2018年09月17日 · 最后由 qianxing 回复于 2018年09月18日 · 729 次阅读

朋友圈看到一篇文章:
不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO

个人觉得作者没有搞清楚jwt与session的关系(或者实践经验不足)。jwt与session的关系好比session与cookie的关系,大家可以搜索一下。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

作为一个前端开发工程师怎么搞不懂jwt和session的关系?我倒觉得你没搞清。作者说的没错,如果事先保存好合法的jwt,那么OAuth验证是完全没有问题的。但多数情况下,合法的jwt还是需要登录之后获得。

理论上来说,JWT 机制可以取代 session 机制。用户不需要提前进行登陆,后端也不需要 Redis 记录用户的登陆信息。客户端的本地保存一份合法的 JWT, 当用户需要调用接口时,附带上该合法的 JWT,每一次调用接口,后端都使用请求中附带的 JWT 做一次合法性的验证。这样也间接达到了认证用户的目的

文章作者说的很清楚嘛

Lucas 回复

jwt本质上与cookie没有本质上的不同:jwt、cookie都是在客户端保存数据,session是在服务器端保存的数据。

1、jwt、cookie保存的数据是否安全取决于使用者。
2、作者那google API的调用来举例有失偏颇,网站认证与授权使用jwt本身也会用到session。

chen 回复

后端进行jwt合法性验证过程中本身也可能用到session,无所谓jwt替换session的问题。

qianxing 回复

这个有点挑骨头了吧,而且作者明显还有下篇啊。
没必要这么评价别人的文章吧

6楼 已删除
qianxing 回复

还是有点鸡蛋挑骨头的意思。调用API Bearer Token就ok啊。网页+服务端当然不能只jwt,这里你忽略了用户直接调用Open API的部分,当然可能还有其他访问令牌。jwt与cookie还是有本质差别的,jwt可以存在local storage和cookie中,cookie反过来可以?但两者都有问题,cookie-session可能存在csrf。jwt可能存在xss。我没觉得作者写的有啥大问题。讲的也基本正确。单从sso角度来考虑,返回可能是jwt可能是令牌,但是后续的操作还是需要cookie-session认真。单从api角度考虑,md5签名访问,form-urlencoded,OAutho 2.0,bearer token都可以。STF的rest API使用的是jwt,我司form-urlencoded的md5签名及其他。

Lucas 回复

cookie存储在本地存储是很常见的,许多移动app的cookie是存在sqlite数据库里面的。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册