下載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>