cas-server-webaap 非maven版改造以及cas-client支持filter配置excludes扩展

1 篇文章 0 订阅

最近有朋友在使用cas,但是项目并没有使用maven管理,需要从官网源码改造一份非maven版的cas-server。下面是我改造后的项目。

本次修改简单介绍:

1、修改https方式为http,主要是本地测试,没想使用证书。修改部分有标注,可以按照官网源码恢复。

2、修改认证方式为数据库。添加jdbc配置,dataSource配置。其中把认证的sql抽出来作为配置项:cas.query.user=select password from t_user where username=?

3、调整log级别为debug。

有需要的朋友配置下自己的数据源,启动服务就可以访问cas-server了。

下载地址cas-server-webapp


#client#

另外,我新建了两个client用于测试,查看sso效果,这期间遇到一个奇葩的需求。朋友需要在cas-client项目中拦截一部分,其余部分不拦截,本来是一个简单的需求,但是由于历史原因,项目没有规划好路径,要拦截的路径很多很零碎,不拦截的路径有一个统一入口,在配置cas拦截url-pattern时,没办法配置(路径基本是各种各样,如果配置进去要把每一个路径放进去,一来配置项太长,二来以后没法维护了,而且没人愿意一个一个去找路径)。

既然如此,就配置url-pattern 为 /*,  只要把不拦截的配置进去,不就简单了吗。可惜的是cas并没有提供这种方式(这其实是对的,因为你配置的路径就是要被拦截的,不配置就不拦截。之所以我朋友这里这么麻烦,还不是因为垃圾设计导致的奇葩现象。)。

为此,考虑扩展client端的filter,提供一个excludes配置项,用于反其道而行之。

查看源码,找到client端配置的拦截器AuthenticationFilter,添加    private String excludes = "/admin/"; private final String exclude_splitter = ";";  以及setter和对应的源码修改,大家懂得。记得把修改后的AuthenticationFilter,在项目的src目录下存放,package为原来的package org.jasig.cas.client.authentication; 当然你也可以修改源码,打包一个jar,但是不利于以后升级。

最后认证拦截器配置为:

<bean name="authenticationFilter"
class="org.jasig.cas.client.authentication.AuthenticationFilter">
<property name="casServerLoginUrl" value="${cas.server.loginUrl}" />
<property name="renew" value="${cas.server.renew}" />
<property name="gateway" value="${cas.server.gateway}" />
<property name="service" value="${cas.client.serverName}" />
<property name="excludes" value="${cas.client.excludes}"></property>
</bean>

下载地址cas-client


启动cas-server,cas-client, cas-client2,访问下任何一个client,不仅能实现sso,而且实现了excludes 一些path。 - _ -


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值