为什么微服务架构里网关都是用 JWT 鉴权,而不是用 Session 鉴权?不是也有基于 Redis 实现的分布式 Session 吗?

2023-11-15 11:29:08 +08:00
 yodhcn
5000 次点击
所在节点    程序员
33 条回复
fcfangcc
2023-11-15 17:50:31 +08:00
@nothingistrue 外部请求在网关层就已经吧 session/cookie 转化成用户信息存在后续 rpc 的 context 中了,内部的微服务之间只需要从 context 拿需要的用户信息就行,为啥要去访问 session ?
qW7bo2FbzbC0
2023-11-15 17:54:25 +08:00
楼上说的对,是这样的,内部信赖环境,服务之间互相用一用挺方便的。
aogg
2023-11-15 17:56:52 +08:00
jwt 也可以主动失效,根据 jwt 里的时间即可
IvanLi127
2023-11-15 18:20:55 +08:00
能减少调用啊,jwt 直接本地就能验证,session 不得在线验证?
mmdsun
2023-11-15 18:39:50 +08:00
session 也能不需要 cookie ,Header 传值就行。
比如:spring redis session 项目,而且集成也超级简单。

jwt+redis 只能管理会话可以用黑名单,不然和 session 没区别了
zoharSoul
2023-11-15 18:43:12 +08:00
你用 session app 咋办?
dddd1919
2023-11-15 22:29:44 +08:00
@gitrebase JWT 就是一个加解密的算法实现,可以不同服务使用同一套算法和配置完成去中心认证,另外按照约定可以带一节明文信息,这是优势。
优势在具体使用场景,甚至更多场景下看就是不足,比如改密码要让已发放的 JWT token 失效,或者强制将 token 踢下线,这种 JWT 算法无法控制,如果加上逻辑层的控制比如黑名单这种,在多机环境下,那就跟 session 机制没有任何区别了。业务系统一般对会话都有些限制要求,出于可控性考虑,session 会更为通用
aragakiyuii
2023-11-15 22:54:35 +08:00
把它当成字符串用就没区别
session 能干的 jwt 也能干,jwt 能干的 session 干不了,就看你想不想多写点生成 jwt 和解析 jwt 的代码了
dyllen
2023-11-16 10:23:53 +08:00
@Conantv2 从这个角度用 jwt 和存储混合用还是有意义的
kaneg
2023-11-16 12:09:32 +08:00
一般来说对于 web 网站,http session 用起来比较简单,但也存在几个问题:
1 )因为是基于 cookie 的,在浏览器里不能跨域,不适应完全没有隶属关系的多域名场景
2) 对业务数据有写操作的 API 要加 CSRF header 防攻击
PVXLL
2023-11-16 13:02:05 +08:00
很多菜鸡把 jwt 当 sessionkey 来使用脱裤子放屁
justdoit123
2023-11-16 15:08:01 +08:00
看到 2 楼喷 session+cookie 我就想笑。

Web 场景下,你 jwt 放哪里?不还是得放在 http-only + secure 的 cookie 里?

什么?你不放 cookie 里,你要放在 localStorage 里?注入的 js 攻击分分钟偷走你的宝贝 jwt 。
llwwbb7
2023-11-16 19:38:27 +08:00
jwt 是一个具体的实现
session 是个什么玩意,为什么好像人人都知道?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/992055

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX