spring security集成cas重定向问题

论坛 期权论坛 脚本     
匿名技术用户   2020-12-27 12:22   11   0

项目中用到了springSecurity作为认证,并且要对接sso单点登录,因为是微服务,还需要在微服务的uaa中进行认证。当前的方式是网关gate中集成cas的springsecurity包,然后sso认证登录成功后在去uaa认证获取token,通过重定向返回前端token。

存在的问题是,当各个系统使用同一个网关,因为重定向地址是写死在配置文件中,重定向就存在问题。

通过跟踪代码,当访问cas的登录拦截/login/cas?redirectUrl=http://localhost:8089 (注意:此处的参数名称不能是service,否则重定向会出现问题,servcie是cas的一个参数的关键词)的时候,刚进去的时候在

RememberWebAuthenticationDetails类中能够获取到重定向参数,但是后续cas的代码会重定向到sso进行认证,并且返回ticket,此时又进入了上述方法,因为请求是不同的,所以session,进程都是不同的。将之前redirectUrl覆盖了。并且也没有一个唯一的key值能够保存重定向url,以方便在处理成功后获取重定向url。

最后在同事的帮助下,找到了方法,是采用HttpSessionRequestCache的方式保存住跳转前的request请求,然后在处理成功重定向的地方通过session获取SPRING_SECURITY_SAVED_REQUEST的值。该值就是跳转前的request请求。

代码实现如下:

保存requestCache:

在需要重定向的类中,获取跳转前的url:

参考链接:https://blog.csdn.net/honghailiang888/article/details/53671108


 

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP