Yale cas服務器端/客戶端環境配置以及其在tomcat服務器下SSL安全協議得部署之徹底實現篇

有關CAS服務器配置以及做爲cas服務器客戶端程序的配置方法介紹java

  因爲CAS要求使用https和客戶端進行通訊,因此須要配置Tomcat支持SSL,爲了實現SSL,一個Web服務必須對每個接受安全鏈接的外部接口或者IP地址有一個相關聯的證書,數字證書的獲取通常從像verisign或者Thawte這樣的著名證書頒發機構(Certificate Authority CA)購買證書,或者若是身份驗證並不很重要,好比管理員只是但願保證服務器發送和接收的數據是私有的而且不能被鏈接中的任何竊聽者探聽到,則能夠只是使用自簽名的證書,從而省去獲取CA證書的時間和成本。此處使用自簽名證書做爲客戶端與服務器端安全通訊的憑證。mysql

本節描述建立一個名爲server.keystore的服務器keystore以及名爲client.keystore的客戶端keystore。這兩個文件構成一個密鑰對。這些文件一般是在<TOMCAT_HOME>目錄中或者在應用程序目錄中建立的。web

咱們使用keytool工具建立keystore文件。能夠在<JAVA_HOME>/bin目錄中找到keytool工具。spring


1.     生成密鑰對sql

keytool -genkey -alias tomcat-server -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore數據庫

2  將服務器證書導出爲證書文件:瀏覽器

keytool -export -alias tomcat-server -storepass changeit -file server.cer -keystore server.keystore 
 輸入密碼(changeit):tomcat

Keytool返回下列消息:安全

Certificate stored in file <server.cer>服務器


3 用keytool在所選的keystore文件中建立客戶端證書:

keytool -genkey -alias tomcat-client -keyalg RSA -keypass changeit -storepass changeit -keystore client.keystore

4 將新客戶端證書從keystore導出到證書文件:

keytool -export -alias tomcat-client -storepass changeit -file client.cer -keystore client.keystore

輸入keystore密碼(changeit)。Keytool將返回該消息:

Certificate stored in file <client.cer>


5 將上述步驟所獲得的tomcat根目錄下server.cer以及client.cer證書文件導入到cacerts 文件中,
cacerts文件默認生成在tomcat根目錄下

keytool -import -trustcacerts -alias server -file server.cer -keystore cacerts -storepass changeit

keytool -import -trustcacerts -alias client -file client.cer -keystore cacerts -storepass changeit

6在tomcat根目錄下找到cacerts文件,拷貝到<JAVA_HOME>\jre\lib\security文件下


從下載得cas-server3最新版本中找到target文件下面得cas.war,拷貝到<TOMCAT_HOME>/webapp目錄下
,修改<TOMCAT_HOME>/conf下面得server.xml文件,添加以下:

<Connector port="8443" maxHttpHeaderSize="8192"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="/server.keystore" keystorePass="changeit"/>
   
  
  7  CAS默認設置爲只要用戶名和密碼相同,便可進行登陸,這在現實使用中是不容許的。咱們修改成使用MySQL的test數據庫中的app_user表做爲用戶數據源。首先,咱們在test庫中建立一個表:
CREATE TABLE `app_user` (
  `username` varchar(30) NOT NULL default '',
  `password` varchar(45) NOT NULL default '',
  PRIMARY KEY  (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
並添加以下用戶:
INSERT INTO `app_user` (`username`,`password`) VALUES 
 ('dianne','emu'),
 ('marissa','koala'),
 ('peter','opal'),
 ('scott','wombat');
用編輯器打開%CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml,找到
    <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
註釋掉該行,在其下加入:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
                            <property name="sql" value="select password from app_user where username=?" />
                            <property name="dataSource" ref="dataSource" />
                     </bean>
並添加一個bean:
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" destroy-method="close">
       <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
       <property name="url"><value>jdbc:mysql://localhost:3306/test</value></property>
       <property name="username"><value>test</value></property>
       <property name="password"><value>test</value></property>
    </bean>
拷貝cas-server-jdbc-3.0.5-rc2.jar和mysql-connector-java-3.1.12-bin.jar到%CATALINA_HOME%/webapps/cas/WEB-INF/lib下。

 

8啓動startup.bat,運行tomcat以後,新打開得瀏覽器中輸入:https://localhost:8443便可看到安全鏈接對話框,選擇以後能夠看到正常運行得tomcat!

---此時 ,cas服務器端配置已經完成,只要配置客戶端以後便可經過cas認證服務器來實現各個子系統之間得單點統一登錄!

客戶端配置以下:

1  打開客戶端得web.xml文件,添加以下


<!-- CAS Filters -->
 <filter>
  <filter-name>CASFilter</filter-name>
  <filter-class>
   edu.yale.its.tp.cas.client.filter.CASFilter
  </filter-class>
  <init-param>
   <param-name>
    edu.yale.its.tp.cas.client.filter.loginUrl
   </param-name>
   <param-value>https://localhost:8443/cas/login</param-value>
  </init-param><!--這裏的server是服務端的IP-->
  <init-param>
   <param-name>
    edu.yale.its.tp.cas.client.filter.validateUrl
   </param-name>
   <param-value>
    https://localhost:8443/cas/proxyValidate
   </param-value>
  </init-param><!--這裏的serName是服務端的主機名,並且必須是-->
  <init-param>
   <param-name>
    edu.yale.its.tp.cas.client.filter.serverName
   </param-name>
   <param-value>localhost:8443</param-value><!--client:port就是須要CAS須要攔截的地址和端口,通常就是這個TOMCAT所啓動的IP和port-->
  </init-param>
 </filter>

 <filter-mapping>   <filter-name>CASFilter</filter-name>   <url-pattern>/secure/*</url-pattern><!--這裏的設置是針對servlets-examples的,針對jsp-examples設置爲/*-->  </filter-mapping>      2  而後拷貝從cas-server網站上下載到的casclient.jar文件到客戶端的lib下面便可;      cas服務器以及客戶端所有部署完畢後,便可經過cas統一認證服務器來實現應用系統中的單點登錄,從而把登錄認證的部分邏輯從  子系統中剝離出來交給cas認證服務器來作!

相關文章
相關標籤/搜索