V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
liiihhhh
V2EX  ›  问与答

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

  •  
  •   liiihhhh · 2016-12-21 00:11:22 +08:00 · 4757 次点击
    这是一个创建于 2913 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如我现在有三个站点
    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 来认证
    我的猜测是:
    如果认证成功就更新首页的用户信息
    不知道这个思路对不对
    4 条回复    2024-04-05 10:58:51 +08:00
    fantastM
        1
    fantastM  
       2016-12-21 01:00:58 +08:00 via iPhone   ❤️ 1
    看一波 sso 协议就清楚了。人家总结版: http://mp.weixin.qq.com/s/5j4vSF_sXNanS5cR8TzLJA
    liiihhhh
        2
    liiihhhh  
    OP
       2016-12-23 19:40:42 +08:00
    我目前的解决方案是,在不需要认证的页面嵌入一个 iframe ,在 iframe 中走登陆的流程,如果成功了返回一段 javascript ,这段 javascript 会重新刷新当前页面,以达到登陆的目的
    lhchun800910
        3
    lhchun800910  
       2018-08-28 11:40:14 +08:00
    您好,最近也是碰到了 CAS 获取用户登录信息这个情况,您解决了吗?具体的解决思路是什么呢??
    8rmEHZ8WhVHVOb0E
        4
    8rmEHZ8WhVHVOb0E  
       250 天前
    sso 登录后另外写一个加密 cookie ,子站点判断这个 cookie 如果存在,说明 sso 已经登录了,主动跳转到 sso 登录,同理这个 cookie 不存在的时候而子站点却是登录状态的时候可以去 sso 主动退出
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   867 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:29 · PVG 05:29 · LAX 13:29 · JFK 16:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.