? ? ? ? (二)中我們完成了CAS SERVER 的部署,并且可以使用 admin/admin 登錄進(jìn)去了梁剔。這僅僅是簡單的身份驗證,實(shí)際應(yīng)用中需要讀取數(shù)據(jù)庫的數(shù)據(jù),下面我們來進(jìn)一步配置 CAS 服務(wù)器怎么讀取數(shù)據(jù)庫的信息進(jìn)行身份驗證菠赚。
? ? ? ? 修改 tomcat/webapps/cas/WEB-INF/deployerConfigContext.xml 文件。
第一步
? ? ? ? 找到92行處郑藏,注釋掉 SimpleTestUsernamePasswordAuthenticationHandler 這個驗證 Handler衡查,這個比較簡單,只是判斷用戶名必盖、密碼相同即可通過拌牲,這個不能再實(shí)際應(yīng)用中使用俱饿。并在下面添加如下代碼:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
? ? <property name="dataSource"? ref="dataSource" />
? ? <property name="sql"? value="select password from user where username=?" />
? ??<property name="passwordEncoder"? ref="MD5PasswordEncoder" />
</bean>
第二步
? ? ? ? 在末尾處添加
<bean id="dataSource"? class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
? ? ? ? <property? name="driverClassName" >
? ? ? ? ? ? ? ? <value>com.mysql.jdbc.Driver</value>
? ? ? ? </property>
?????????<property? name="url"?>? ? ? ? ? ? ? ? ? ? ? ? ?
? ??????????<value>jdbc:mysql:192...........</value>
????????</property>?
? ??????<property? name="username"?>?
? ??????????<value>bhz</value>?
? ? ? ? </property>
? ??????<property? name="password"?>?
? ???????????<value>bhz</value>?
? ??????</property>
</bean>
<bean id="MD5PasswordEncoder"? class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"? >
? ? ? ? <constructor-arg index="0">
? ? ? ? ? ? ? ? <value>MD5</value>
? ? ? ? </constructor-arg>
</bean>
第三步
? ? ? ? 最后復(fù)制 cas-server-3.4.3/modules/cas-server-support-jdbc-3.4.3.1.jar 和 mysql 驅(qū)動到?tomcat/webapps/cas/WEB-INF/lib 目錄中。
配置解釋
? ?????QueryDatabaseAuthenticationHandler是 cas-server-support-jdbc 提供的查詢接口其中之一塌忽,QueryDatabaseAuthenticationHandler 是通過配置一個sql查詢查出密碼拍埠,與所給的密碼進(jìn)行匹配。
? ? ? ? sql語句就是查詢哪一張表土居,本例根據(jù) user 表的 username 字段查詢密碼枣购,CAS 會匹配用戶輸入的密碼,如果匹配則通過擦耀;根據(jù)實(shí)際情況自行進(jìn)行更改即可棉圈。
? ??????passwordEncoder,處理密碼的加密眷蜓,看你的應(yīng)用中數(shù)據(jù)庫保存的是明碼還是加密過的分瘾,本例是使用MD5 加密,配置MD5PasswordEncoder這個 Handler 账磺,cas 內(nèi)置了?MD5 加密功能芹敌,所以只需配置即可。如果實(shí)際應(yīng)用中使用公司自己的加密算法那么就需要自己寫一個handler來處理密碼垮抗,實(shí)現(xiàn)方式比較簡單氏捞,創(chuàng)建一個類繼承?"org.jasig.cas.authentication.handler.PasswordEncoder ,然后在 encode 方法中加密用戶輸入的密碼然后返回即可冒版。
第四步
? ? ? ? 我們最后在數(shù)據(jù)庫設(shè)置用戶名液茎、密碼,然后通過cas系統(tǒng)進(jìn)行登錄辞嗡。若根據(jù)自定義用戶名捆等、密碼登錄成功,則至此為止cas服務(wù)端配置結(jié)束续室。