V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
qwerthhusn
V2EX  ›  程序员

如何实现一个方便第三方系统对接的单点登录解决方案?不是那种授权的单点登录,而是像登录了 Google 就自动登录了油管的那种单点登录方案

  •  1
     
  •   qwerthhusn · 2021-04-08 11:12:38 +08:00 · 717 次点击
    这是一个创建于 1377 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们要做一个系统,然后需要把用户部分抽离出来,后续会有第三方系统接入,可以直接像登录 Google,Gmail,Youtube 这些网站都已经登录上的那种效果,而不是像第三方授权的那种方式!

    首先 CAS 被排除了,因为不知道第三方系统用的什么语言架构,感觉 CAS 跟 Java 绑定的比较死。。(我需要出个文档以便后面的系统直接接入)

    然后是 OAuth2,我发现这种所谓的单点登录跟我想象中的单点登录不一样,这种是你需要授权的。比如使用 Github 登录 StackOverflow 。实际上是 Stackoverflow 上新建了一个用户里面绑定了 Github,当你登出 Github 之后,StackOverflow 还是处于登录的状态。

    然后看了 OpenID Connect,感觉就是比 OAuth2 多返回一个用户的 id,而且看很多网站提供的 OAuth2 里面在获取 Access_token 的时候已经把 open_id 给返回了,这样的话感觉跟 OAuth2 没多少区别。

    大佬们,对于我这种场景,求教使用什么方案会好一些,多谢!!
    7 条回复    2024-11-28 10:05:59 +08:00
    uselessVisitor
        1
    uselessVisitor  
       2021-04-08 13:54:48 +08:00
    搜一下 SSO ?
    SmiteChow
        2
    SmiteChow  
       2021-04-08 17:03:20 +08:00
    不就是单点么?
    SmiteChow
        3
    SmiteChow  
       2021-04-08 17:05:10 +08:00
    单点和 OAuth2 授权本来就是两个概念呀,一个用于网站群,一个用于获取受限资源。
    redbelt
        4
    redbelt  
       51 天前
    楼主 有没有找到方法
    redbelt
        5
    redbelt  
       51 天前
    > 比如使用 Github 登录 StackOverflow 。实际上是 Stackoverflow 上新建了一个用户里面绑定了 Github ,当你登出 Github 之后,StackOverflow 还是处于登录的状态。

    ----
    使用 github 登录 stackoverflow ,之所以会弹框让你点击确定,是因为这里不是单纯的登录,而是 stackoverflow 还想要请求 github 上你的资源(头像昵称等),所以实际上使用的是 oauth2 协议, 而这里的确定交互,也仅仅在第一次使用 github 登录时会发生,之后不会,只要 github 本身在登录状态,很快就跳转到 stackoverflow 。

    google.com youtube.com 这两个网站的单点登录功能为什么那么丝滑?可以简单的理解为他们是一家的,不需要授权既可以取得数据,google.comyoutube.com 在未登录状态下都会重定向到 accounts.google.com 进行登录,成功登录后 account.google.com 下会被种上 cookie ,当再 google.com 或者 youtube.com 的时候如果发现当前网站没有登录态,会直接重定向到 account.google.com ,如果 account.google.com 有登录态,会带着登录态信息重定向到想要登录的网站比如 youtube.com, youtube.com 会根据这个登录态 cookie 找到当前用户是谁,并在返回的时候种下 youtube.com 的 cookie 。

    SmiteChow 说的 没错,这就是 SSO 。
    qwerthhusn
        6
    qwerthhusn  
    OP
       49 天前
    @redbelt 老哥虽然你在挖坟,但是我还是说下吧。


    三年前的事情了,我早被裁了。。

    不过那时候我们最后还是采用自定义的协议,因为我们是后台管理系统,当管理员在我们这边做变更后,需要业务系统及时知道,比如权限被收回了等等。所以那种 OAuth 的压根不适用。

    我们采用了业务系统登录会直接跳转用户中心,完事后会带着一个 Token ,然后业务系统后台需要去用户中心后台验证 Token 有效,并且在用户登出的时候用户中心后台会通知所有业务系统。。。除此之外,用户中心还提供给业务系统一些查询用户信息的接口等等。。。。。最后的效果是,我们自己家的业务系统跟用户中心的连接很好,用户体验也很好,就跟支付宝淘宝,Gooogle 油管那样丝滑,登录一个之后,另外一个无感进入。。。但是其他家第三方系统对接效果就不咋样了,可能是这套协议比较复杂,对方也懒得仔细弄,经常出现用户中心 Cookie 过期了甚至用户都被禁用了那边还能用的情况。。。
    redbelt
        7
    redbelt  
       47 天前
    @qwerthhusn
    哈哈哈

    没有实现统一登出回调就会出现第三方系统 token 持续生效的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5529 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 06:33 · PVG 14:33 · LAX 22:33 · JFK 01:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.