公司的平台引入了CAS SSO来实现整个系统的单点登录功能,在CAS Client的web.xml中需要配置Filter来拦截外来的请求,实现单点登录、单点登出、权限认证、Ticket认证、设置用户信息等。
其中一个系统是多点部署的,不同的点之间要通过HTTP来传输数据,Server端是用SpringMVC实现的,那么类似这种非通过页面发起的请求就需要排除在CAS的Filter之外。刚开始的思路是在FilterMapping声明时使用正则表达式,但是部署测试无效,通过Google从SOF上得知,Servlet是不支持正则的,如下说明:
No, you can't use a regex there. According to the Java Servlet Specification v2.4 (section srv.11.1), the url-path is interpreted as follows:
•A string beginning with a ‘/’ character and ending with a ‘/*’ suffix is used for path mapping.
•A string beginning with a ‘*.’ prefix is used as an extension mapping.
•A string containing only the ’/’ character indicates the "default" servlet of the application. In this case the servlet path is the request URI minus the context path and the path info is null.
•All other strings are used for exact matches only.
No regexes. Not even complicated wild-cards.
意思好像是以"/"开头的只能通过前缀过滤,以"*"开头的只能通过后缀过滤,其它字符串只能完全匹配,不支持正则,甚至是复杂的通配符。既然Servlet不支持,那只好另寻它路了。其它还能想到的方法有:
- 1. 自定义Filter,然后引用CAS自身的Filter;
- 2. 将传送数据的请求从MVC中剥离。
因为CAS权限验证、登入、登出的功能是分多个Filter拦截的,修改比较复杂,而且有潜在的风险。所以最后选择了写一个单独的Servlet实现接收数据的功能。
=========================================
分享到:
相关推荐
排除CAS客户端不需要过滤的路径,在web.xml文件中配置排除地址。
CAS客户端自定义核心过滤器,继承CAS的AbstractCasFilter自定义AuthenticationFilter
CAS协议,包括cas1.0和cas2.0的协议,cas 协议分为两部分,一部分是票据-ticket,一部分是url。
给使用某些没有filter框架java系统接入cas单点登录样例,导入工程到eclipse即可运行,查看main servlet 调用CasValidate类与cas服务器进行交互验证获取登录帐号
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </...
service=${cas.project.url}${adminPath}/cas" /> <!-- CAS --> ${adminPath}?login" /> <entry key="cas" value-ref="casFilter"/> <!-- CAS --> 然后在核心应用配置...
<filter-name>CAS Filter</filter-name> <filter-class> edu.yale.its.tp.cas.client.filter.CASFilter </filter-class> <!-- server login url --> edu.yale.its.tp.cas.client.filter....
cas4.2.7服务端+cas客户端+示例程序+环境搭建之客户端war包 一切跑不起来的程序和走不通的...该客户端的这个URL还演示了如何调用cas服务端获取当前登录用户的相关信息(由服务端负责从数据库中读取后返回给cas客户端)。
> 其中shiroFilter这个类主要用于需要拦截的url请求,需要注意的是这个是shiro的拦截,我们还需要配置cas的过滤配置casFilter > casRealm这个类是需要我们自己实现的,主要用于shiro的权限验证,里面的属性说明如下...
cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x集成cas4.1.x...
cas-client扩展拦截器支持excludes,用于支持排除拦截指定路径。只是简单的在filter中进行过滤,希望大家继续完善。
7.CAS-cookie设置 8.CAS-tgc设置 9.CAS-登出 10.CAS-redisCluster集群存储ticket(相应redis必须配置成cluster集群) 11.CAS-加密存储ticket 12.CAS-实习动态验证码 13.CAS-实习自定义登录 14.CAS-实现自定义返回...
cas4.2.7 实现其他系统和cas互相认证互信 cas4.2.7 实现其他系统和cas互相认证互信 cas4.2.7 实现其他系统和cas互相认证互信
H3C CAS 3.0版 H3C CAS 3.0产品培训胶片 H3C CAS-云计算管理平台技术白皮书V2.0 H3C CAS-云计算管理平台 安装指导-5W101-整本手册 H3C CAS-维护手册V2.0 H3C CAS-工程开局指导手册V2.0 H3C CAS-Rest API H3C ...
shiro+cas实现单点登录 示例代码,送源码分析url:http://note.youdao.com/noteshare?id=a83380ee8fc6913162042e865689844e&sub=CD905CCCE4134A159326DC2DFC1AF268
cas6.3版本 tomcat环境准备好,mysql设置成application.properties中提示,thekeystore自己生成放入tomcat并需要在jdk中导入证书
包含cas源码、cas使用说明文档(包含配置信息)、连接数据库所需jar包、cas服务端自定义返回值等
CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案CAS5.3.2Docker 部署方案
- the cas-shiro-demo-app module is a demo web application which uses the CAS Shiro support library with protected area requiring CAS authentication : http://shiro.apache.org/cas.html - the cas-shiro-...
n cas-server-3.4.2\modules\cas-server-support-jdbc-3.4.2.jar 、 cas-server-integration-restlet-3.4.2.jar 拷贝到 D:\server\apache-tomcat-6.0.18\webapps\cas\WEB-INF\lib 目录下。 n 数据库驱动 jar 拷贝...