V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heeeeeem
V2EX  ›  程序员

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

  •  
  •   heeeeeem · 12 天前 · 1619 次点击

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

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

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

    13 条回复    2021-10-14 21:20:25 +08:00
    eason1874
        1
    eason1874   12 天前
    禁用第三方 cookie 的浏览器内在 b 域名引入 a 域名资源是不带 a 本来的 cookie 的,只能用跳转的办法

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

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

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

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

    https://www.apereo.org/projects/cas
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2794 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 106ms · UTC 12:00 · PVG 20:00 · LAX 05:00 · JFK 08:00
    ♥ Do have faith in what you're doing.