我看到的单点登录都是通过子域名共享 cookie 实现的, 跨域单点登录我只见过淘宝天猫,是通过第三方 cookie 实现
我想知道 cas 真的能用吗?有具体的网站用到吗?
假如有 A.com 和 B.com 两个网站,我在先 A.com 登录了,
然后去到 B.com ,在 B.com 一个页面中有个签到功能是需要登录的,
而签到的页面有一个弹框显示相关签到信息,并有一个签到按钮,
这时点签到需要带上当前页面的 url 去 sso 服务器认证,
经过 cas 一番操作认证成功回到这个 B.com ,那就等于刷新了当前页面,我刚点开的签到页面岂不就关闭了,
也就是虽然我通过 cas 登录了 B.com ,但我之前在 B.com 打开的弹框会消失,我还得再点一次签到,不能做到无缝连接
也可能是我理解不对,想知道大家是怎么做的,有没有 cas 的网站或案例可供参考
1
eason1874 2021-10-14 01:06:01 +08:00
禁用第三方 cookie 的浏览器内在 b 域名引入 a 域名资源是不带 a 本来的 cookie 的,只能用跳转的办法
登录跳转前可以暂存用户操作,跳转回来了自动恢复,比如在 storage 记下“签到”这个动作,回调了就触发签到 也可以打开新 tab 登录,通过 postMessage 或者 storage listener 同步登录状态到原窗口 |
2
acrisliu 2021-10-14 01:21:46 +08:00 via iPhone
同一楼,跳转前记录当前状态,跳转回来后恢复状态。
|
3
nvkou 2021-10-14 01:25:41 +08:00 via iPhone
Sso 知道:你成功登陆的账号,你账号的权限,你成功登陆的 ip 。 那么甲网站只需要带上挑战让你的浏览器去一下 sso 。Sso 就知道你令牌过期没有,有没有权限登陆甲,甲是不是可信域名。判断后再回来甲,甲验证签名和挑战即可登陆用户。 也就是说证明你是你是在 Sso 完成,甲只需要知道 Sso 是说真话就行了。 至于让乙自动登陆也是这么个流程,前提是用户在 Sso 上的登陆还没过期。对于用户来说无非就是浏览器有 2 次跳转
|
4
binux 2021-10-14 01:44:47 +08:00 via Android
点签到的时候再弹一个窗去认证不就好了
|
5
binsys 2021-10-14 08:44:24 +08:00
CAS 应用很广,起码在教育系统。
|
6
xuanbg 2021-10-14 09:10:16 +08:00
只要 AB 使用同一个认证服务器颁发的 token 就能实现单点登录。
|
7
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 已登录自动完成授权执行下一流程 |
8
twinsdestiny 2021-10-14 12:09:33 +08:00
单点登录后要保持页面不变,需要应用自己实现的
|
9
sharkwan 2021-10-14 15:32:59 +08:00
进到 B.com 点击签到,只是访问了一个接口,,,这个接口可能带入了一些需要认证的信息,,,接口返回,也大概率是 json 数据,,页面只是渲染这个 json 数据,,不会刷新页面的
|
12
heeeeeem OP |
13
wqtacc 2021-10-14 21:20:25 +08:00
|
14
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/ ¶ |