用 jwt 写了两天的单点登录,同事突然说把 a, b, c 系统的用户表单独放在服务 d 上也可以解决,好像没啥毛病啊,谁来解释一下?

2019-12-17 15:34:42 +08:00
 dapengzhao

1 a, b, c, d 都是内网,服务也都是部署在内网,d 保存用户信息。 2 用户在浏览器用正确的用户名密码请求 a 服务,a 到 d 上验证通过,生成 session,并且把 sessionid 保存在浏览器 cookie 中,这时候浏览器去访问 b,c,用已经保存的 cookie 这时候也可以拿到正确的 session,这不也是单点登录成功了。

1861 次点击
所在节点    问与答
9 条回复
piecehealth
2019-12-17 15:48:12 +08:00
cookie 不跨域
randyo
2019-12-17 15:53:43 +08:00
有同样的根域名是可以
Aruforce
2019-12-17 16:04:28 +08:00
域名一致可以啊
piecehealth
2019-12-17 16:24:04 +08:00
域名一致的话 cookie 不加密(不安全),或者所有服务加密 cookie 的秘钥算法都一致
littleylv
2019-12-17 17:05:52 +08:00
前提是你 abc3 个网址都是同一个域名下才可以互相访问 cookie,否则“浏览器去访问 b,c,用已经保存的 cookie ”这里就已经走不通了

正常考虑的单点登录大多是不同域名的情况(比如某宝 . com 某猫 . com )
netnr
2019-12-17 17:18:38 +08:00
前面刚玩:不同域名,主站登录保存 Cookie,其他站点直接带主站 Cookie 发起访问,可以通过授权

有几个点:后台开启跨域和接收 Cookie,配置写入 Cookie 的 SameSite 属性,当然开启后会有 CSRF 攻击的风险

这个是写的总结: https://www.netnr.com/home/list/138
sunziren
2019-12-18 10:34:51 +08:00
真是活到老学到老
OctopusGO
2019-12-18 17:33:01 +08:00
没有毛病
Shikyou
2020-06-24 16:53:22 +08:00
这一类实现单点登录的云服务已经很多了,为什么还要自行开发呢?
比如国内的 Authing,还有美国的 Auth0 和 AWS Cognito 都行的(国内由于政策原因用不了)。
用了以后就回不去了,再也无需开发、运维用户系统~

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

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

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

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

© 2021 V2EX