有关 Spring scurity+CAS 的 CasProcessingFilter 的 defaultTargetUrl 的重定向问题

问题描述

这个问题郁闷了我好几天了。。。。。。问题叙述有点乱,不好意思。。。。。。系统安全部分用的是Springscurity3.0+CAS3.3,CAS同时管理着若干个应用,我在applicationContext.xml中配置了CAS的entrypoint,并通过CasProcessingFilter将CAS插入到了默认的过滤器链中,以上都没问题。问题是:当我通过CAS成功登录了A应用后,再第一次访问B或者C应用时,都会被CasProcessingFilter重定向到其所指定的defaulttargeturl。也就是说,假如有A、B、C三个应用,每个应用都有其各自的index.html,而且均在其配置文件中被定义为了defaulttargeturl。那么即使我首先在A应用中通过CAS登录成功,当我第一次访问B或者C应用时,都会被重定向至B或C的index.html,无视其是否已取得了正确的Token。而再次访问之前访问过的应用时,就不会出现此种情况了。问题的本质我认为是因为,每次第一次登录自他应用时,即便已经通过了CAS登录,取得了正确的Token,但相对于目标应用的Springscurity,都是第一次登录,所以都会通过CasProcessingFilter这个过滤器。而CasProcessingFilter的defaulttargeturl在官方文档中的叙述为“indicatestheURLthatshouldbeusedforredirectioniftheHttpSessionattributenamedACEGI_SAVED_REQUEST_KEYdoesnotindicatethetargetURLonceauthenticationiscompletedsuccessfully.eg:/.ThedefaultTargetUrlwillbetreatedasrelativetotheweb-app'scontextpath,andshouldincludetheleading/.Alternatively,inclusionofaschemename(eghttp://orhttps://)astheprefixwilldenoteafully-qualifiedURLandthisisalsosupported.”。而当重复访问已登录过的应用时,由于应用的securityContext中已存在之前的登录信息,所以就无须再次通过过滤器了。我请问,是否有什么好方法解决此问题。不知道是否能通过配置解决。我现在有一个比较笨的解决方案,就是在登录CAS的一个应用后,同时向其他应用发送一个http请求,如此则模拟了登录的操作。不知道是否有人能提供规范的解决方案,谢谢

解决方案

解决方案二:
自己顶下

时间: 2024-10-22 00:10:45

有关 Spring scurity+CAS 的 CasProcessingFilter 的 defaultTargetUrl 的重定向问题的相关文章

spring security cas整合如何实现注册后自动登录

问题描述 spring security cas整合如何实现注册后自动登录 spring security cas整合如何实现注册后自动登录,哪位高手有样例代码,万分感谢 解决方案 CAS 之 实现用户注册后自动登录

spring security cas单点登录拒绝访问

问题描述 cas服务端和cas客户端都已经配合,访问cas服务端可以登录,访问客户端应用资源的时候出现拒绝访问问题,但是能成功跳转到cas服务端的login页面,输入账号密码后控制台打印显示出服务端登录成功,但是关于客户端的打印出现拒绝访问异常,而且httpSession不为null但是里面没值.初次使用spring security和cas望多多指教.异常信息:首次登录直接出现拒绝访问,但是却能跳转到cas 登录页面,引用 解决方案 Spring Security与CAS集成,第一次访问客户端

spring security +cas 单点登录 注销session问题

问题描述 我现在有个项目,用springsecurity+cas登录,单点登录成功,显示在线人数为1,但是当我单点登出,也就是注销的时候,经过控制台,发现注销的时候会创建session,注销的sessionid不是创建的sessionid,也就是说当我注销后,重新登录时,就会显示在线人数为2.请问这个问题如何解决 解决方案 解决方案二:判断session的值如何为空的话,session.invalidate()

spring整合shrio+cas单点登录

问题描述 spring整合shrio+cas单点登录 我想不通过登录界面登录,而是通过发送一个id后在后台实现登录,这要这么实现了.这里有使用到spring的flow. <view-state id=""viewLoginForm"" view=""casLoginView"" model=""credential""> <binder> <binding

单点登录之CAS SSO从入门到精通(第三天)

开场白 各位新年好,上海的新年好冷,冷到我手发抖. 做好准备全身心投入到新的学习和工作中去了吗?因为今天开始的教程很"变态"啊,我们要完成下面几件事: 自定义CAS SSO登录界面 在CAS SSO登录界面增加我们自定义的登录用元素 使用LDAP带出登录用户在LDAP内存储的更多的信息 实现CAS SSO支持多租户登录的功能 好,开始正文! 正文 上次我们说到了CAS SSO的一些基本用法如:连数据库怎么用,连LDAP怎么用,这次我们要来讲一个网上几乎没有人去过多涉及到的一个问题即:在

Yale CAS + .net Client 实现 SSO(3)--实现 ASP.NET WebForm Client

原文地址: http://www.cnblogs.com/zhenyulu/archive/2013/01/22/2870936.html 第一部分:安装配置 Tomcat 第二部分:安装配置 CAS 第三部分:实现 ASP.NET WebForm Client 第四部分:实现基于数据库的身份验证 第五部分:扩展基于数据库的身份验证 第六部分:自定义登录页面 第三部分:实现 ASP.NET WebForm Client 1. 下载.NET CAS client. .NET CAS Client

activiti自定义流程之Spring整合activiti-modeler5.16实例(二):创建流程模型

注:(1)环境搭建:activiti自定义流程之Spring整合activiti-modeler5.16实例(一):环境搭建 1.maven导包,这里就没有什么多的好说了,直接代码: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </de

java 项目中的链接共用此项目的session。怎么实现

问题描述 java 项目中的链接共用此项目的session.怎么实现 java 项目中插入了很多小型的项目链接,但是都需要登录一遍.对使用者来说很不人性化,我需要怎么做才能只登录一次打开其他链接自动获取当前项目的session 解决方案 利用认证服务器来统一认证 解决方案二: 就是需要进行单点登录嘛,使用Spring security + CAS可以轻松解决 解决方案三: 用 session共享 用memcached和apache服务器就可以实现 session共享了

Apache Shiro

Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证.授权.加密.会话管理等功能.认证和授权为权限控制的核心,简单来说,"认证"就是证明你是谁? Web 应用程序一般做法通过表单提交用户名及密码达到认证目的."授权"即是否允许已认证用户访问受保护资源.关于 Shiro 的一系列特征及优点,很多文章已有列举,这里不再逐一赘述,本文重点介绍 Shiro 在 Web Application 中如何实现验证码认证以及如何实现单点登录. 14 评论