真正的跨域单点登录是怎样的? cas 有人在用吗?

2021-10-14 00:31:56 +08:00
 heeeeeem

我看到的单点登录都是通过子域名共享 cookie 实现的, 跨域单点登录我只见过淘宝天猫,是通过第三方 cookie 实现

我想知道 cas 真的能用吗?有具体的网站用到吗?
假如有 A.comB.com 两个网站,我在先 A.com 登录了,
然后去到 B.com ,在 B.com 一个页面中有个签到功能是需要登录的,
而签到的页面有一个弹框显示相关签到信息,并有一个签到按钮,
这时点签到需要带上当前页面的 url 去 sso 服务器认证,
经过 cas 一番操作认证成功回到这个 B.com ,那就等于刷新了当前页面,我刚点开的签到页面岂不就关闭了,
也就是虽然我通过 cas 登录了 B.com ,但我之前在 B.com 打开的弹框会消失,我还得再点一次签到,不能做到无缝连接

也可能是我理解不对,想知道大家是怎么做的,有没有 cas 的网站或案例可供参考

3006 次点击
所在节点    程序员
14 条回复
eason1874
2021-10-14 01:06:01 +08:00
禁用第三方 cookie 的浏览器内在 b 域名引入 a 域名资源是不带 a 本来的 cookie 的,只能用跳转的办法

登录跳转前可以暂存用户操作,跳转回来了自动恢复,比如在 storage 记下“签到”这个动作,回调了就触发签到

也可以打开新 tab 登录,通过 postMessage 或者 storage listener 同步登录状态到原窗口
acrisliu
2021-10-14 01:21:46 +08:00
同一楼,跳转前记录当前状态,跳转回来后恢复状态。
nvkou
2021-10-14 01:25:41 +08:00
Sso 知道:你成功登陆的账号,你账号的权限,你成功登陆的 ip 。 那么甲网站只需要带上挑战让你的浏览器去一下 sso 。Sso 就知道你令牌过期没有,有没有权限登陆甲,甲是不是可信域名。判断后再回来甲,甲验证签名和挑战即可登陆用户。 也就是说证明你是你是在 Sso 完成,甲只需要知道 Sso 是说真话就行了。 至于让乙自动登陆也是这么个流程,前提是用户在 Sso 上的登陆还没过期。对于用户来说无非就是浏览器有 2 次跳转
binux
2021-10-14 01:44:47 +08:00
点签到的时候再弹一个窗去认证不就好了
binsys
2021-10-14 08:44:24 +08:00
CAS 应用很广,起码在教育系统。
xuanbg
2021-10-14 09:10:16 +08:00
只要 AB 使用同一个认证服务器颁发的 token 就能实现单点登录。
dzdh
2021-10-14 09:36:36 +08:00
想要无缝那就页面插入 cas 的 js 吧

比如
cas.user().then(user=>{ local.checkin.check(user.id) })

cas.user() 在当前 domain 下没 cookie 自动弹出登录窗口,登录窗口连接 cas,cas 已登录自动完成授权执行下一流程
twinsdestiny
2021-10-14 12:09:33 +08:00
单点登录后要保持页面不变,需要应用自己实现的
sharkwan
2021-10-14 15:32:59 +08:00
进到 B.com 点击签到,只是访问了一个接口,,,这个接口可能带入了一些需要认证的信息,,,接口返回,也大概率是 json 数据,,页面只是渲染这个 json 数据,,不会刷新页面的
heeeeeem
2021-10-14 16:16:55 +08:00
@sharkwan cas 又不是只用请求一次,还需要几次地址栏重定向的
sharkwan
2021-10-14 17:34:37 +08:00
@heeeeeem 请求一次认证登录成功,B 就已经 set-cookie
heeeeeem
2021-10-14 17:42:58 +08:00
@sharkwan 签到请求发到 B.com 的后台,后台让浏览器重定向到 SSO.com ,签到这个请求就已经完成了,并没有 json 返回来
wqtacc
2021-10-14 21:20:25 +08:00
如果不用 Oauth2 做这件事,Java 中用的非常多的一个也没说需要同域

https://www.apereo.org/projects/cas
norristong2
2022-01-29 18:47:05 +08:00
跟域名没有太大相关性,“直接将用户的信息返回,而是返回一个授权码 code ,再使用 code 在业务后端换取 Access token ,再用 Access token 获取用户信息。成熟、正规的业务系统产品都会支持标准协议,使用标准协议对接可以一劳永逸地完成对接。标准协议的推荐度:OIDC > SAML2 > CAS 1.0 > LDAP > OAuth2.0 。”

可以看看这个 https://docs.authing.cn/v2/guides/sso/


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

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

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

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

© 2021 V2EX