关于 SSO 单点注销, SSO如何通知子系统清除凭证?
发布于 6 年前 作者 zhongxia245 6713 次浏览 来自 问答

子系统的注销按钮,是跳转到 SSO 的注销接口地址, 然后 SSO 清除cookie,然后 通知(发送 http 请求)给子系统清除 session。

但是当重新刷新子系统页面的时候,session 还是存在的, 尴尬,

注销的代码如下, 求大佬指教

image.png

image.png

11 回复

会话应该是保存在浏览器cookie里的,要从前端请求子系统和SSO的退出

[CNodeMD]

@dbit-xia 比如有三个子系统,那么 SSO 服务器注销就需要跳转分别跳转三个子系统去注销,这样理解对吗?

@zhongxia245 这个 直接在sso服务器注销就可以 其他站点在判断下有没有那个sso 的 cookie

@puzzle9 sso 不在一个域名下, 拿不到 sso 的 cookie 的 后面解决了,子系统把 登录的 session 存在 数据库或者 redis 里面, 然后 sso 注销后,通知子系统去注销相对应的 session

我们实现的sso系统做单点退出原理就是在用户中心退出时分别通知各个子系统 子系统负责自身的退出逻辑即可

主系统提供用cookie换用户信息和验证的接口。 子站每次刷新去请求主站接口。根据接口的返回,子站维护一个属于自己的session。

有时候答案不是唯一的,看你的业务 需求,如果你需要你的子系统跟主系统绝对同步,那原则上你每个子系统请求都要去主系统check一下,

@HongYangHT 刚开始实现的时候没有用这个,换这个的话就需要重写了哈,

@SharksevenRo 对的,最终解决就是用这种方式

回到顶部