真正的跨域单点登录是怎样的? cas 有人在用吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
heeeeeem

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

  •  
  •   heeeeeem Oct 14, 2021 4168 views
    This topic created in 1656 days ago, the information mentioned may be changed or developed.

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

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

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

    14 replies    2022-01-29 18:47:05 +08:00
    eason1874
        1
    eason1874  
       Oct 14, 2021
    禁用第三方 cookie 的浏览器内在 b 域名引入 a 域名资源是不带 a 本来的 cookie 的,只能用跳转的办法

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

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

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

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

    https://www.apereo.org/projects/cas
    norristong2
        14
    norristong2  
       Jan 29, 2022
    跟域名没有太大相关性,“直接将用户的信息返回,而是返回一个授权码 code ,再使用 code 在业务后端换取 Access token ,再用 Access token 获取用户信息。成熟、正规的业务系统产品都会支持标准协议,使用标准协议对接可以一劳永逸地完成对接。标准协议的推荐度:OIDC > SAML2 > CAS 1.0 > LDAP > OAuth2.0 。”

    可以看看这个 https://docs.authing.cn/v2/guides/sso/


    About     Help     Advertise     Blog     API     FAQ     Solana     5779 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 61ms UTC 08:07 PVG 16:07 LAX 01:07 JFK 04:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86