下载CAS
从GitHub上下载cas-server-4.0.0-release.zip,如图2.1.1红框中所示,地址为:https://github.com/apereo/cas/releases/tag/v4.0.0。
图2.1.1
发布CAS
解压下载好的cas压缩文件,将cas-server-4.0.0\cas-server-4.0.0\modules下的cas-server-webapp-4.0.0.war,上传到cas用户的tomcat服务器的webapps下。并将cas-server-webapp-4.0.0.war重命名为cas.war。启动tomcat服务器来发布cas.war包,启动成功后,将上传的cas.war删除,最后webapps如下图2.2.1所示:
图2.2.1
浏览器访问,页面显示如图2.2.2所示,在CAS的4.0.0版本,用户名为casuser,密码为Mellon。依次输入后,登陆成功
图2.2.2
CAS链接数据库
打开cas/WEB-INF 下的deployerConfigContext.xml,注释掉下面的配置信息
<!-- 注释掉原本固定登录用户 -->
<!-- <beanid="primaryAuthenticationHandler"
class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
<property name="users">
<map>
<entrykey="casuser" value="Mellon"/>
</map>
</property>
</bean> -->
在上面注释掉的配置信息下添加如下信息,更改用户认证方式为数据库认证
<!-- 变更为JDBC验证方式 -->
<bean id="primaryAuthenticationHandler"class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
<property name="dataSource"ref="dataSource"></property>
<property name="sql" value="select password_ from user_ where screenName = ?"></property>
<propertyname="passwordEncoder"ref="MD5PasswordEncoder"></property>
</bean>
配置说明:
1、QueryDatabaseAuthenticationHandler是cas-server-support-jdbc提供的查询接口其中一个是通过配置一个 SQL 语句查出密码,与所给密码匹配;
2、dataSource是使用JDBC查询时的数据源;
3、sql语句就是查询哪一张表,本例根据u_user表的useraccount字段查询密码,CAS会匹配用户输入的密码,如果匹配则通过;
4、passwordEncoder这个就算是自己加的盐巴了,意思很明显就是处理密码的加密,看你的应用中数据库保存的是明码还是加密过的,比如本例是使用MD5加密的,所以配置了MD5PasswordEncoder这个Handler,cas内置了MD5的功能所以只需要配置一下就可以了;如果在实际应用中使用的是公司自己的加密算法那么就需要自己写一个Handler来处理密码,实现方式也比较简单,创建一个类继承org.jasig.cas.authentication.handler.PasswordEncoder然后在encode方法中加密用户输入的密码然后返回即可。
在上面的配置信息下添加如下配置
<!-- 数据源配置 -->
<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<propertyname="url"><value>jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&useSSL=false</value></property>
<propertyname="username"><value>demo</value></property>
<propertyname="password"><value>demo</value></property>
</bean>
<!-- 添加MD5密码加密功能 -->
<bean id="MD5PasswordEncoder"class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
<constructor-argindex="0">
<value>MD5</value>
</constructor-arg>
</bean>