请教 CAS 单点登录系统 的问题

2016-05-16 22:03:26 +08:00
 gdtv
我们有 N 个使用 php 或者 java 开发的网站,在不同的子域名下。我们想实现在其中一个网站登录 /退出的时候,其他网站可以自动登录 /退出。
于是我们找了这个东西: CAS 单点登录系统 http://zxs19861202.iteye.com/blog/855856

有些疑问请教一下大家:
1 、假设站点 app1.demo.com 上有个页面 app1.demo.com/show.php , 这个页面无论登录与否都可以访问,如果未登录则显示登录链接,如果已登录则显示用户信息。请问是否每次访问这个页面,客户端都必须后台调用服务器端进行检测用户的登录状态?
2 、在站点 1 (即客户端 1 )登录后,站点 2 (即客户端 2 )如何得知登录状态? 服务器端会在后台向站点 2 通知登录状态吗? 还是说站点 2 在刷新页面的时候才能调用服务器端进行检测用户的登录状态?
3 、同第 2 点类似,在站点 1注销后,站点 2 如何得知登录状态?
1877 次点击
所在节点    问与答
13 条回复
JiShuTui
2016-05-16 22:20:52 +08:00
建议先仔细学习一下单点登录的原理,你的疑问都能得到解答。
Syc
2016-05-16 22:45:01 +08:00
UCenter 走起
markmx
2016-05-16 22:50:57 +08:00
CAS 一般 适用与封闭系统 类似 SNS 之类的。
论坛 等 一般可匿名浏览的不适用 CAS 。
因为 A 站访问时 会拦截跳转到 CAS 进行密钥验证。在访问 B 站时,再次跳转到 CAS 上进行验证。
如果想要让用户感觉不到跳转的过程 可能需要改造一下验证机制,异步进行登录验证 。
9hills
2016-05-16 22:56:03 +08:00
匿名也可用 CAS ,没问题的,不强制要求登录即可。
gdtv
2016-05-16 23:26:17 +08:00
@markmx 访问 A 站-->跳转到 CAS 验证-->跳转回 A 站,此时 A 站是已登录状态。 此时再访问 B 站, B 站需要跳转到 CAS 验证吗?如果不需要,那么 B 站如何获取登录状态?根据 session 或者 cookie ?
501956430
2016-05-16 23:36:26 +08:00
@gdtv a 登录成功后 cookie 中已经有 sessionid 这个事设置在根域名下的 再次访问拿 cookie 去登录的
501956430
2016-05-16 23:38:31 +08:00
@501956430 实际上还分装了加密的 token
markmx
2016-05-17 09:28:53 +08:00
@gdtv b 站 肯定要跳到 CAS 进行验证的 , 其实有 COOKIE 的就是 CAS,
A 和 B 站 COOKIES都是根据CAS的 交换过来的数据进行生成的.
其实同步登陆好做 至少有个触发点..同步退出 是个蛋疼的问题..
上面说过 如果不想来回跳 可以做个异步 !
gdtv
2016-05-17 09:55:46 +08:00
@501956430 a 登录成功后 cookie 中已经有 sessionid ,此时打开 B 的页面, B 可以直接得到登录状态吗?
gdtv
2016-05-17 10:03:12 +08:00
@markmx 在 A 站已登录的情况下,我的系统现在就是 b 站要跳转一次到 CAS 进行验证,但是看网上的说明说 B 站不用跳转,直接就能获取到已登录状态。
markmx
2016-05-17 10:21:40 +08:00
肯定是需要跳转到CAS的. 记录COOKIES或者SESSION是浏览器的行为.服务器之间是无法做交换的.

不想跳就  AJAX 过去一个页面过去..
501956430
2016-05-18 20:49:22 +08:00
@gdtv 这个时候实际上也是去登录了一次,只是你完全感觉不到
Shikyou
2020-06-24 16:58:12 +08:00
这一类实现单点登录的用户管理的云服务已经很多了,为什么还要自行开发呢?
比如国内的 Authing,还有美国的 Auth0 和 AWS Cognito 都行的(国内由于政策原因用不了)。
用了以后就回不去了,再也无需开发、运维用户系统。

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

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

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

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

© 2021 V2EX