设置CAS Filter过滤某些URL
公司的平台引入了CAS SSO来实现整个系统的单点登录功能,在CAS Client的web.xml中需要配置Filter来拦截外来的请求,实现单点登录、单点登出、权限认证、Ticket认证、设置用户信息等。
其中一个系统是多点部署的,不同的点之间要通过HTTP来传输数据,Server端是用SpringMVC实现的,那么类似这种非通过页面发起的请求就需要排除在CAS的Filter之外。刚开始的思路是在FilterMapping声明时使用正则表达式,但是部署测试无效,通过Google从SOF上得知,Servlet是不支持正则的,如下说明:
意思好像是以"/"开头的只能通过前缀过滤,以"*"开头的只能通过后缀过滤,其它字符串只能完全匹配,不支持正则,甚至是复杂的通配符。既然Servlet不支持,那只好另寻它路了。其它还能想到的方法有:
1. 自定义Filter,然后引用CAS自身的Filter;2. 将传送数据的请求从MVC中剥离。
因为CAS权限验证、登入、登出的功能是分多个Filter拦截的,修改比较复杂,而且有潜在的风险。所以最后选择了写一个单独的Servlet实现接收数据的功能。