我正在尝试将我的Ja-sig CAS服务器(在Tomcat7上运行v3.5)连接到MySQL数据库以进行用户身份验证。我基本上在数据库中有一个表'users',存储我希望CAS检查的用户名/密码对。但是,我甚至难以部署当前的配置。
这是pom.xml的摘录,因为它与数据库连接有关:
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-support-jdbc</artifactId>
<version>${cas.version}</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.22-bin</version>
<scope>provided</scope>
</dependency>
这是我尝试在WEB-INF / deployerConfigContext.xml中设置数据库连接的地方:
<bean
class="org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler">
<property name="tableUsers">
<value>users</value>
</property>
<property name="fieldUser">
<value>username</value>
</property>
<property name="fieldPassword">
<value>password</value>
</property>
<property name="passwordEncoder">
<bean
class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
<constructor-arg value="MD5" />
</bean>
</property>
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="datasource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/cas_db</value>
</property>
<property name="username">
<value>cas_server</value>
</property>
<property name="password">
<value>pass</value>
</property>
</bean>
它与Maven完美搭配,但是当我尝试使用Tomcat部署它时它不起作用。我无法在任何tomcat日志中找到任何特别有用的信息。我想知道'commons-dbcp'是否存在问题,因为当我发表评论并在deployerConfigContext.xml中使用一个简单的身份验证处理程序时,我就可以部署了。
我目前的网络研究似乎没有什么记录。如果有人有任何好的资源,他们也可以推荐,非常感谢。
答案 0 :(得分:3)
我终于在tomcat log localhost.YYYY-MM-DD.log中发现了一些错误。事实证明,我需要添加commons-pool:
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.6</version>
<scope>provided</scope>
</dependency>
commons-dbcp依赖于哪些。使用Maven安装它会消除我得到的缺少的类异常。
我的下一个问题是我在deployerConfigContext.xml中的authenticationHandlers列表中错误地定义了我的数据源bean,这导致了类型转换异常。将bean移出list标签就行了。
答案 1 :(得分:0)
在CAS + JDBC身份验证(https://wiki.jasig.org/display/CASUM/Using+JDBC+for+Authentication)的官方指南之一上,他们对此发表评论:
注意:建议使用commons-dbcp 1.2.1与MySQL而不是较新版本。我发现新的版本(1.2.2)会在你的CAS空闲超过8小时之后在MySQL中引起Socket写入错误,这是MySQL清理所有空闲连接的时间。
您的问题可能与 commons-dbcp 的版本有关。在我的情况下,我有一个类似于你的配置与commons-dbcp版本的差异,我使用1.4(没有问题)