本文中的例子以 tomcat6.0 为例进行讲解,下载地址:
http://tomcat.apache.org/download-60.cgi
到 CAS 官方网站下载 CAS Server 和 Client,
CAS Server使用的3.5.2.1
CAS Client使用的3.2.1
地址分别为:
http://www.ja-sig.org/downloads/cas/cas-server-3.5.2.1-release.zip
http://www.ja-sig.org/downloads/cas-clients/cas-client-3.2.1-release.zip
CAS Server 是一个 Web 应用包,将前面下载的 cas-server-3.5.2.1-release.zip 解开
把其中的 cas-server-webapp-3.5.2.1.war 拷贝到 tomcat的 webapps 目录,并更名为 cas.war。启动 tomcat,然后访问:http://localhost:8088/cas/login ,如果能出现正常的 CAS 登录页面,则说明 CAS Server 已经部署成功。
登陆认证方式为:用户和密码相同就可以登陆 比如cas/cas
CAS服务架子基本就搭建起来了。下一步应用到工作当中
一:配置CAS 的datasource数据源
下面将如何配置oracle数据源,其他数据库也都差不多
添加JDBC支持的jar在webapps\cas\WEB-INF\lib
1.添加casserver支持的jar包
cas-server-support-jdbc-3.5.2.1.jar
commons-dbcp-1.2.1.jar
commons-pool-1.3.jar
2.添加ORACLE驱动jar包
ojdbc14.jar
3.添加MD5加密包(后面会讲到)
myMD5.jar
二:用户认证以及数据库连接配置
在webapps\cas\WEB-INF\deployerConfigContext.xml
数据库连接配置
<!--[if !supportLists]-->1.<!--[endif]-->增加数据库连接配置(紧跟在beans标签下就可以)
<bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@128.21.3.9:1521/orcl</value>
</property>
<property name="username">
<value>gdgs</value>
</property>
<property name="password">
<value>gdgs</value>
</property>
</bean>
用户认证登陆配置
<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
系统默认自带的是 用户名和密码相等 即通过认证。
修改成<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="casDataSource" />
<property name="sql" value="select password from fw_right_user where is_enable=1 and is_deleted = 0 and lower(user_code) = lower(?)" />
<property name="passwordEncoder" ref="myPasswordEncoder"/>
</bean>
如果你们的工程采用了加密算法,则该类的加密要和你们项目用到的一致,则需要自己自定义一个加密的类,引入bean
<bean
id="myPasswordEncoder" class="org.jasig.cas.authentication.handler.MyPasswordEncoder"/>
org.jasig.cas.authentication.handler.MyPasswordEncoder见《CAS制作加密jar包.doc》
证书认证时间默认是10秒 ,如果出现10秒还没认证完,则会报错
未能够识别出目标 'ST-41-2VcnVMguCDWJX5zHaaaD-xx’票根
修改webapps\cas\WEB-INF\spring-configuration\ticketExpirationPolicies.xml 中
<bean id="serviceTicketExpirationPolicy" class="org.jasig.cas.ticket.support.MultiTimeUseOrTimeoutExpirationPolicy"
c:numberOfUses="1" c:timeToKill="${st.timeToKillInSeconds:100}" c:timeUnit-ref="SECONDS"/>
改成100秒 。
单点退出http://127.0.0.1:8088/cas/logout?service=127.0.0.1/frameWorkWeb
退出之后会返回到127.0.0.1/frameWorkWeb中
修改cas-servlet.xml配置文件中的logoutController,新增属性 p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"