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

2021-04-08 11:12:38 +08:00
 qwerthhusn
我们要做一个系统,然后需要把用户部分抽离出来,后续会有第三方系统接入,可以直接像登录 Google,Gmail,Youtube 这些网站都已经登录上的那种效果,而不是像第三方授权的那种方式!

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

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

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

大佬们,对于我这种场景,求教使用什么方案会好一些,多谢!!
1300 次点击
所在节点    程序员
7 条回复
zm8m93Q1e5otOC69
2021-04-08 13:54:48 +08:00
搜一下 SSO ?
SmiteChow
2021-04-08 17:03:20 +08:00
不就是单点么?
SmiteChow
2021-04-08 17:05:10 +08:00
单点和 OAuth2 授权本来就是两个概念呀,一个用于网站群,一个用于获取受限资源。
redbelt
2024-11-24 01:17:11 +08:00
楼主 有没有找到方法
redbelt
2024-11-24 02:03:25 +08:00
> 比如使用 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
2024-11-25 20:00:14 +08:00
@redbelt 老哥虽然你在挖坟,但是我还是说下吧。


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

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

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

没有实现统一登出回调就会出现第三方系统 token 持续生效的问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/768979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX