最近在使用 CAS 做单点登录,碰到个问题。在认证之后,在其他子业务不需要认证的请求上如何获得用户信息

2016-12-21 00:11:22 +08:00
 liiihhhh
比如我现在有三个站点
cas cas.xx.com
app1 aap1.xx.com
app2 app2.xx.com
app1 app2 都是用 spring boot 写的

其中
app1 /index (无需认证) /protected1 (需要认证)
app2 /index (无需认证) /protected2 (需要认证)

情况一、
如果我先访问 app1 的 /protected1 会去 cas 中认证
此时我再访问 app2 /protected2 也会去 cas 中认证(此时就不要输入用户名密码了)
这里我理解, 主要是在子业务拦截了需要认证的 url ,需要认证的就会跳转到 cas.xx.com
情况二、
如果我先访问了 app1 的 /protected1 并成功认证
再访问 app2/index ,这个时候我该如何拿到认证后的用户信息

我观察了一下百度的
如果我在百度登陆了, 当我访问糯米网首页就直接是登陆状态了
糯米网也是异步请求了 nuomipassport.baidu.com 来认证
我的猜测是:
如果认证成功就更新首页的用户信息
不知道这个思路对不对
4744 次点击
所在节点    问与答
4 条回复
fantastM
2016-12-21 01:00:58 +08:00
看一波 sso 协议就清楚了。人家总结版: http://mp.weixin.qq.com/s/5j4vSF_sXNanS5cR8TzLJA
liiihhhh
2016-12-23 19:40:42 +08:00
我目前的解决方案是,在不需要认证的页面嵌入一个 iframe ,在 iframe 中走登陆的流程,如果成功了返回一段 javascript ,这段 javascript 会重新刷新当前页面,以达到登陆的目的
lhchun800910
2018-08-28 11:40:14 +08:00
您好,最近也是碰到了 CAS 获取用户登录信息这个情况,您解决了吗?具体的解决思路是什么呢??
8rmEHZ8WhVHVOb0E
233 天前
sso 登录后另外写一个加密 cookie ,子站点判断这个 cookie 如果存在,说明 sso 已经登录了,主动跳转到 sso 登录,同理这个 cookie 不存在的时候而子站点却是登录状态的时候可以去 sso 主动退出

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

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

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

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

© 2021 V2EX