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

用 jwt 写了两天的单点登录,同事突然说把 a, b, c 系统的用户表单独放在服务 d 上也可以解决,好像没啥毛病啊,谁来解释一下?

  •  
  •   dapengzhao · 2019-12-17 15:34:42 +08:00 · 2012 次点击
    这是一个创建于 1801 天前的主题,其中的信息可能已经有所发展或是发生改变。

    1 a, b, c, d 都是内网,服务也都是部署在内网,d 保存用户信息。 2 用户在浏览器用正确的用户名密码请求 a 服务,a 到 d 上验证通过,生成 session,并且把 sessionid 保存在浏览器 cookie 中,这时候浏览器去访问 b,c,用已经保存的 cookie 这时候也可以拿到正确的 session,这不也是单点登录成功了。

    9 条回复    2020-06-24 16:53:22 +08:00
    piecehealth
        1
    piecehealth  
       2019-12-17 15:48:12 +08:00 via Android
    cookie 不跨域
    randyo
        2
    randyo  
       2019-12-17 15:53:43 +08:00 via Android
    有同样的根域名是可以
    Aruforce
        3
    Aruforce  
       2019-12-17 16:04:28 +08:00 via Android
    域名一致可以啊
    piecehealth
        4
    piecehealth  
       2019-12-17 16:24:04 +08:00 via Android
    域名一致的话 cookie 不加密(不安全),或者所有服务加密 cookie 的秘钥算法都一致
    littleylv
        5
    littleylv  
       2019-12-17 17:05:52 +08:00
    前提是你 abc3 个网址都是同一个域名下才可以互相访问 cookie,否则“浏览器去访问 b,c,用已经保存的 cookie ”这里就已经走不通了

    正常考虑的单点登录大多是不同域名的情况(比如某宝 . com 某猫 . com )
    netnr
        6
    netnr  
       2019-12-17 17:18:38 +08:00
    前面刚玩:不同域名,主站登录保存 Cookie,其他站点直接带主站 Cookie 发起访问,可以通过授权

    有几个点:后台开启跨域和接收 Cookie,配置写入 Cookie 的 SameSite 属性,当然开启后会有 CSRF 攻击的风险

    这个是写的总结: https://www.netnr.com/home/list/138
    sunziren
        7
    sunziren  
       2019-12-18 10:34:51 +08:00
    真是活到老学到老
    OctopusGO
        8
    OctopusGO  
       2019-12-18 17:33:01 +08:00
    没有毛病
    Shikyou
        9
    Shikyou  
       2020-06-24 16:53:22 +08:00
    这一类实现单点登录的云服务已经很多了,为什么还要自行开发呢?
    比如国内的 Authing,还有美国的 Auth0 和 AWS Cognito 都行的(国内由于政策原因用不了)。
    用了以后就回不去了,再也无需开发、运维用户系统~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5143 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 05:47 · PVG 13:47 · LAX 21:47 · JFK 00:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.