您的位置:首页 > 数据库 > MySQL

CAS4.2.5 配置jdbc连接MySql校验用户

2017-04-05 17:44 501 查看
最近用了CAS做SSO,截止目前最新的版本是4.2.6,我们选了4.2.5,觉得较为稳定一些,为了配置连接MySql花了很多功夫,于是决定分享一下,避免以后走弯路。

网上的配置大都停留在3.x版本上,只配置xml就行,但是jasig在4.x版本以后,需要配置cas.properties文件,网上没找到现成的资料,愁的头疼。

由于jasig的网站和git上的地址都换了,所以官方的文档找不到了,几经波折,发现了官网的文档地址:

https://apereo.github.io/cas/4.2.x/installation/Database-Authentication.html#database-components

其实根据文档配置就好了,在这里翻译一下,另外标注几个需要注意的点:

1、下载依赖的jar包,最方便的是用maven,直接就把依赖的所以jar都下载了,对于我这种maven用的不溜的,想了个笨办法:在Eclipse建一个maven项目,填写dependency,version:4.2.5(最新4.2.6),等maven upate结束,打成war包,再解压,所有的依赖jar包都在 lib里了。简单粗暴。

<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>${cas.version}</version>
</dependency>

2、cas-server-support-jdbc需要依赖的包:

c3p0

Mysql的jdbc驱动包(根据数据库自行选择)

所有依赖jar包放到cas-server-webapp的WEB-INF的lib下。有冲突的覆盖或跳过都没问题。版本一致就好。

3、在tomcat里找到cas的配置文件:deployerConfigContext.xml 、 cas.properties 进行配置。

4、配置deployerConfigContext.xml

注释掉:

<alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler" />

增加数据库连接池配置:特别注意的是:jdbcUrl的配置,里面如果有“&” 的,要替换成“&”,不替换tomcat启动的时候报错:【对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾】,另外,jdbcUrl根据具体情况配置,不是固定写法。

<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="com.mysql.jdbc.Driver"
p:jdbcUrl="jdbc:mysql://127.0.0.1:3306/sso_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull"
p:user="fiad"
p:password="fiad"
p:initialPoolSize="6"
p:minPoolSize="6"
p:maxPoolSize="18"
p:maxIdleTimeExcessConnections="120"
p:checkoutTimeout="10000"
p:acquireIncrement="6"
p:acquireRetryAttempts="5"
p:acquireRetryDelay="2000"
p:idleConnectionTestPeriod="30"
p:preferredTestQuery="select 1" />

我这里偷了个懒,把jdbc的配置直接写xml里面了,也可以配置变量,然后具体值写到cas.properties里,可以参考官方文档。

官方提供了四种方式配置数据库验证。

第一种:配置sql语句 :QueryDatabaseAuthenticationHandler

在xml里加入:

<alias name="queryDatabaseAuthenticationHandler" alias="primaryAuthenticationHandler" />
<alias name="dataSource" alias="queryDatabaseDataSource" />

在cas.properties里加入:此文件中原本就有这行配置,是被注释掉的,可以放开,或者直接复制进去就行,【=】号后面的是查询mysql的sql语句,根据用户名查密码。需要自己更改。

cas.jdbc.authn.query.sql=select password from users where username=?

都保存了,重启tomcat做实验就行啦。

目前只实现了这一种,2,3,4种方法,在官方文档里都有说明,请参照,另外说明一下,目前这种方法是没有加密的,即密码是明文的,回头研究一下加密方式的,再开个新贴。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息