上个课程遗留问题

来源:5-12 实现基于token的SSO(2)

破地瓜

2019-09-17

上个课程我问了两个问题说这个课程会有提及
1.多个系统使用不同的登陆页面,回答是本次课程会讲,看课程目录似乎没有这部分内容?
2.若多个系统使用sso登陆,如何同时退出的问题。给的答案是退出一个系统时循环退出所有系统。
对这个答案不满意。本身我不知道一共有多少个系统接入了sso,另外我也不知道多少的系统接入并且在同一个浏览器登陆过。第四章课程中只退出了admin和aouth两个系统,可能还有其他系统中没有退出,若我用不同的用户登陆admin 就会取到不同的登陆人(另外一个客户端的session还没过期,仍然是登陆状态)

麻烦老师给个方案,这俩问题困扰我很久依然没有解决

写回答

1回答

JoJo

2019-09-17

  1. 把认证服务器的登录页面配置到一个Controller方法上,在那个方法里通过HttpSessionRequestCache拿到跳转到登录页之前的那个请求,也就是/oauth/authorize请求(具体写法可以参见SavedRequestAwareAuthenticationSuccessHandler),这个请求的参数上应该有clientId,根据不同的clientId再跳到不同的页面。

  2. 可以用课程第五章最后讲的无session的方式来实现SSO,这样删除cookie的token时,所有的客户端就都退出了。

0
3
破地瓜
问题2 确实没有找到简单又优雅的办法; 本地环境先用循环退出 生产环境应该不存在这个问题 生产环境是同一个域名或者IP 端口 有session共享
2019-09-19
共3条回复

Spring Cloud微服务安全实战 可落地的安全方案

从API到复杂微服务场景,实战部署可落地的安全方案。

1029 学习 · 370 问题

查看课程