1
mightybruce 45 天前
你是不是前端程序员啊,这个想法也只有前端才会这么认为
这就是基本的 SSO (单点登录), 10 年前就有的技术。 |
2
zuixinwenyue 45 天前
1 楼说的对
|
3
thxgod 45 天前
cookie 吧
|
4
body007 45 天前
|
5
sentinelK 45 天前 8
楼上这都回答的什么……
楼主的问题是:如何实现跨域单点登录。 然后一楼回答:这是单点登录,笨蛋。 三楼四楼:同域可以通过 cookie 或者 storage 哟。 v2ex 的水平已经下降到这种程度了么…… |
6
x2420390517 OP |
7
Zeroo07 45 天前
1l 正解吧,他这两个站点域名不一样
|
9
body007 45 天前
|
10
x2420390517 OP |
11
x2420390517 OP @mightybruce 我确实是前端程序员,我也听过单点登录。但是我有点疑惑就是,jdl.com 新打开的时候,他什么都没有,单点登录系统怎么认证他的,这里不理解,所以才提问的
|
12
sentinelK 45 天前 1
跨域单点登录可以参考以下内容:
https://juejin.cn/post/6844903862743089165 简单而言,跨域单点登录唯一需要注意的,就是要“安全”的把 A 站点的状态(可以是 token ,可以是 sessionID 、ticket 等等),同步到 B 站点。 |
13
vcbal 45 天前
SSO 的话 有好几种实现方式,我就说个笨方法,有个总站的概念
|
14
mightybruce 45 天前
sentinelK 真是个大聪明, 拿着其他家的单点登录说京东也是这样做的,就你牛逼
|
15
x2420390517 OP @body007 #9 哥,这是控制台,你当然能看到
|
16
x2420390517 OP @mightybruce #14 哥,别激动🥰
|
17
mightybruce 45 天前 1
单点登录 SSO 想做好并不容易, 基本这个在大厂一做就要好几年以上,这个每家实现都不一定一样了。
你可以看看相关 RFC 标准 https://datatracker.ietf.org/doc/html/rfc7642 @x2420390517 |
18
c3de3f21 45 天前
如果单靠设备指纹就可以做状态管理,我想不到那该有多爽卧槽~~~
|
20
andyskaura 45 天前 1
|
21
Belmode 45 天前 1
京东主站
jd.com 的认证域是 https://passport.jd.com 账号密码、手机号登录都是走此域。 京东物流 jdl.com 的认证域是 https://sso.jdl.com 在 jdl.com 点击页面的登录按钮会调用请求 https://sso.jdl.com/sso/login?from=jdlwl_pc&ReturnUrl=https://www.jdl.com/ 这个请求会将信息转发到 https://passport.jd.com/new/login.aspx?sso=1&from=jdlwl_pc&ReturnUrl=https://sso.jdl.com/sso/redirect 然后在 jd.com 的认证域认证完成后,通过回调的 url 返回 jdl.com 这就是传统的 SSO 单点登录,借助 passport.jd.com 的 cookie 或者 stoarge 配合回调 url ,完成跨域认证。 |
22
BiChengfei 45 天前 1
jd.com 登录后,访问 jdl.com ,先判断 jdl.com 中是否登录,未登录则重定向至 jd.com?redirect=jdl.com ,jd.com 中再进行重定向 jdl.com?token=xxxxx ,。这样 jdl.com 就获取到了用户的登录信息,就可以自动登录了
12 楼说的对,SSO 就是如何把 A 域名下的数据安全拿到 B 域名下 |
23
luzemin 45 天前
关键词:跨域单点登录 Cross-Domain Single Sign-On (CDSSO)
看看相关资料应该不难理解,另外#20 楼都贴图了 |
24
vczyh 45 天前
有一个站点负责认证:sso.com
1. 应用 A (a.com) 收到请求会调用 sso.com 验证其中的 token ,如果不通过就跳转到 sso.com?redirect=a.com 登录。 2. 登录之后将 token 保存到 sso.com 域下,然后跳转到 a.com?token=xx ,此时应用 A 可以保存 token 。 3. 应用 B (b.com) 收到请求后调用 sso.com 验证 token ,如果通过跳转到 b.com ,如果不通过跳转到 sso.com?redirect=b.com 就可以拿到 token (第 2 步),然后跳转到 b.com?token=xx ,B 将 token 保存起来。 通过 sso.com 将 A 的 token 保存到 B 下。 |
25
param 45 天前 via Android
新版 firefox 默认的安全选项已经隔离了每个域的 cookies ,上次调了很久走不通,发现是 firefox 默认隔离了。如果是基于此方法实现的单点登录,在 firefox 上应该想不通,楼主可以在 firefox 上试下?
这样要做单点登录适配的话,只能做重定向的方式。 |
26
param 45 天前 via Android
https://cloud.tencent.com/developer/article/1616222
浏览器完全禁用了第三方 cookies ,就无法做到了。只能用重定向的方式。 |
27
x2420390517 OP @c3de3f21 #18 肯定有设备指纹这个信息
|
28
x2420390517 OP @andyskaura 平时都是用的 token ,set-cookie 操作,假设 jdl.com 没有打开,能成功设置嘛
|
29
x2420390517 OP @Belmode 大致过程明白了,但是请求会传什么信息呢,passport.jd.com 怎么知道这个请求是谁的
|
30
x2420390517 OP @BiChengfei 你要不要去体验下,你看看 jdl 没登录,打开之后有没有重定向的过程
|
31
x2420390517 OP @param #26 重定向页面不是应该会有跳转,打开 jdl 的页面,直接就显示登录了
|
33
param 44 天前
@x2420390517 #31 可能因为你用的是 chrome ,还没完全禁止第三方 Cookie ,所以不需要跳转就能做到跨域通讯了。
|
34
x2420390517 OP @param #33 刚刚用火狐试了,不用跳转也可以登录,版本是 122.0
|
35
sentinelK 44 天前
@zsdroid 如果你有比我更多的信息可以分享(比如为什么 JDL 没有重定向导致的闪屏问题),大可拿出来说。而不要在这里放空炮。
我回答的时候,楼主没有说他了解的知识范围,也没有表达他具体的技术细节疑问,那我肯定是从零介绍。 看故事不要倒着看。 btw:使用对 cookie 限制最严格的 firefox ,jd 和 jdl 之间是不能实现 sso 的。也就是说,他并没有重定向,代价就是在限制严格的浏览器不能 sso 。 |
36
sentinelK 44 天前
|
37
x2420390517 OP @sentinelK #36 我刚刚升级了版本,还是可以🤣🤣
|
38
BiChengfei 44 天前
@x2420390517 “SSO 就是如何把 A 域名下的数据安全拿到 B 域名下”,这才是重点啊,大家也只是简单写一下理论方案
|
39
AItsuki 44 天前
这帖子看的我都生气了 12L ,26L 都给出答案了,你还搁那你的 firefox 可以。连设置和清理都不会么
|
40
param 44 天前
@x2420390517 #37 检查下你的 firefox 设置,检查下你的跨域请求带不带 cookies
|
41
param 44 天前 1
我刚刚试了一下 firefox 的「标准」限制级别,确实是可以的。看来我还没搞清它的隔离规则。在某下情况下才会被隔离。
|
42
andyskaura 44 天前
|
43
x2420390517 OP @andyskaura #42 非常感谢
|
44
x2420390517 OP @AItsuki 生气你就别看,如果你知道原理,我可以说出来,你也可以不说,但是没必要在这里阴阳怪气的,我并没有问你!!!还有你自己看看楼下的回复
|
45
param 44 天前
@Belmode #21
@andyskaura #42 奇怪的是,jd.com 向 sso.jdl.com 发请求触发的 setcookie 操作,是可以在 jdl.com 下共享读取到的。 而我自己在 firefox 下怎么试都是被隔离的。 京东的 SET-COOKIE 在 firefox 之下看到是大写的,我自己去模拟这一状况,set-cookie 都是小写显示的。 不知道是我缺少哪一步,还是说京东有什么黑魔法。他可以做到我不可以。 |