cas4.2.7学习(三)cas server 配置oracle 数据库

1、加入jar包

cas server jdbc支持

<dependency>
    <groupId>org.jasig.cas</groupId>
    <artifactId>cas-server-support-jdbc</artifactId>
    <version>4.2.7</version>
</dependency>

Oracle驱动

oracle驱动没有maven 依赖,可直接在外部导入

在WEB-INF下创建lib,将ojdbc6.jar 拷贝进去,右键➡build path➡ add to build path 即可

发现问题:我们导入jar包之后,打开 maven dependenceies 可能会发现,里边出现了很多jar包,但都是灰色的,这时需要将pom.xml中的

<dependency>
    <groupId>org.jasig.cas</groupId>
    <artifactId>cas-server-webapp</artifactId>
    <version>${cas.version}</version>
    <type>war</type>
    <scope>runtime</scope>
</dependency>

里边的<scope>runtime</scope>去掉,然后 maven update一下,会发现所有jar基本都正常了。

2、修改cas.properties

打开cas.properties 找到:

cas4.2.7学习(三)cas server 配置oracle 数据库

打开注释(用什么属性,打开什么属性即可),配置数据库链接,例如:

cas.audit.database.show.sql=true
cas.audit.database.driverClass=oracle.jdbc.driver.OracleDriver
cas.audit.database.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
cas.audit.database.user=test
cas.audit.database.password=test

配置密码查询sql语句:

找到cas.jdbc.authn.query.sql属性,打开注释,配置sql 例如

cas.jdbc.authn.query.sql=select pwd from user_info where ueser_id=?

这个sql中能且只能返回一个密码字段,网上的什么select * 是错的。

3、配置deployerConfigContext.xml

从target中找到deployerConfigContext.xml,拷贝一份到项目的WEB-INF下

cas4.2.7学习(三)cas server 配置oracle 数据库

打开deployerConfigContext.xml找到:

<util:map id="authenticationHandlersResolvers">
   <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
   <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
</util:map>

在里边添加数据认证方式(原有的认证方式如果不需要可以删掉):

<util:map id="authenticationHandlersResolvers">
  <entry key-ref="proxyAuthenticationHandler" value-ref="proxyPrincipalResolver" />
  <!-- 默认配置文件用户认证方式,可屏蔽 -->
  <!-- 添加数据库认证 -->
  <entry key-ref="databaseAuthenticationHandler" value-ref="primaryPrincipalResolver" /></util:map>

配置链接池,以及将链接池与认证方式关联,在deployerConfigContext.xml中添加:

<!-- 配置queryDatabaseAuthenticationHandler别名 -->
 <alias name="queryDatabaseAuthenticationHandler" alias="databaseAuthenticationHandler" />
    <!-- 配置dataSource别名 -->
 <alias name="dataSource" alias="queryDatabaseDataSource" />

    <!--数据库连接池配置-->
 <bean id="dataSource"
     class="com.mchange.v2.c3p0.ComboPooledDataSource"
     p:driverClass="${cas.audit.database.driverClass}"
     p:jdbcUrl="${cas.audit.database.url}"
     p:user="${cas.audit.database.user}"
     p:password="${cas.audit.database.password}"
     />

4、测试

配置完成后,发布tomcat 测试,启动tomcat报错:

cas4.2.7学习(三)cas server 配置oracle 数据库

很明显jar包冲突了,原因:在eclipse中每次发布项目的时候,在tomcat插件项目实际发布位置里边的WEB-INF下的文件并没有变,也就是缓存一直都在,就算你把项目在tomcat中删掉,然后打开它的实际发布路径中看,它还是存在的,我个人觉得这应该是maven overlay导致的。

解决办法:删除eclipse中原来的tomcat server 重新配置一下,即可。

重新配置之后再次启动就没问题了:

cas4.2.7学习(三)cas server 配置oracle 数据库

打开浏览器输入数据库中的用户名密码:

cas4.2.7学习(三)cas server 配置oracle 数据库cas4.2.7学习(三)cas server 配置oracle 数据库

测试成功