此文的目的是為了加深自己的理解,做一個備份與分享
過程全為自己的實際操作步驟
第一步:準備的環境
win7 64位的系統
jdk1.6.0_37
apache-tomcat-6.0.14
cas-server-3.4.8-release
cas-client-3.2.0-release
這里用到的是tomcat自帶作為測試的程序
首先,找到系統的hosts文件(
C:\Windows\System32\drivers\etc\hosts )增加
在本機映射三個域名
127.0.0.1 cas.baishi.com
127.0.0.1 app1.baishi.com
127.0.0.1 app2.baishi.com
解釋,其中,cas.baishi.com對應部署cas server的tomcat ,這個域名對應證書的生成
app1.baishi.com對應部署app1應用的tomcat
app2.baishi.com對應部署app2應用的tomcat
第二步:部署cas的服務
(1)首先,我在D盤下建一個文件夾,如D:/baishikeys 接著用jdk自帶的keytool生成證書,即在cmd命令中鍵入
keytool -genkey -alias baishi -keyalg RSA -keystore “D:/baishikeys/baishikey” 該命令生成keys證書
baishi為證書的別名,執行結果如下圖,注意其中姓氏要寫之前cas server對應的域名
(2)導出證書
keytool -export -file d:/baishikeys/baishi.crt -alias baishi -keystore d:/baishikeys/baishikey
執行結果如圖(其中密碼和上面證書密碼一致)

(3)把證書導入JDK中
先找到你安裝的jdk目錄中cacerts文件刪掉,如D:\Program Files\Java\jdk1.6.0_37\jre\lib\security\cacerts
這樣的目的是避免后面報錯
執行keytool -import -keystore "D:\Program Files\Java\jdk1.6.0_37\jre\lib\security\cacerts" -file D:/baishikeys/baishi.crt -alias baishi
執行結果如圖(其中密碼和上面一致就行)
第三步:配置cas的服務端
解壓apache-tomcat-6.0.14重命名為apache-tomcat-cas
把下載的cas-server-3.4.8-release包解壓,在文件modules中,找到cas-server-webapps-3.4.8.war
復制到apache-tomcat-cas的webapps文件夾下,重命名為 cas.war,打開apache-tomcat-cas的
conf/server.xml文件,
找到64到72中間的注釋打開,改為
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/baishikeys/baishikey"
keystorePass="123456"
/>
其中keystoreFile是創建證書的路徑,keystorePass是創建證書的密碼,到此cas服務的配置完成
啟動cas服務的apache-tomcat-cas,訪問https://cas.baishi.com:8443/cas
執行圖:點擊繼續瀏覽此網站
執行后圖
用戶名和密碼輸入相同的字符串就可以通過了
到此cas服務端的配置成功了
第四步:配置cas的客戶端
(1) 安裝配置 apache-tomcat-app1
解壓apache-tomcat-6.0.14 .tar,改名為apache-tomcat-app1對應應用app1的服務
修改apache-tomcat-app1的啟動端口,在文件conf/server.xml文件找到如下內容:
<Connector port="8080" protocol="HTTP/1.1" |
</tr>
</tbody>
</table>
</div>
|
connectionTimeout="20000" |
</tr>
</tbody>
</table>
</div>
|
redirectPort="8443" /> |
</tr>
</tbody>
</table>
</div>
|
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> |
</tr>
</tbody>
</table>
改成
<Connector port="18080" protocol="HTTP/1.1" |
</tr>
</tbody>
</table>
</div>
|
connectionTimeout="20000" |
</tr>
</tbody>
</table>
</div>
|
redirectPort="18443" /> |
</tr>
</tbody>
</table>
</div>
4 |
<Connector port="18009" protocol="AJP/1.3" redirectPort="18443" /> |
</tr>
</tbody>
</table>
為了避免多個tomcat沖突,把<Server port="8005" shutdown="SHUTDOWN">也改成 <Server port="8085" shutdown="SHUTDOWN">
啟動apache-tomcat-app1</span> ,瀏覽器輸入 http://app 1 .baishi.com: 1 8080/examples/servlets/ 回車:
則tomcat配置成功
接下來復制 client的lib包cas-client-core-3.2.0.jar到 apache-tomcat-app1\webapps\examples\WEB-INF\lib\目錄下, 在apache-tomcat-app1\webapps\examples\WEB-INF\web.xml 文件中增加如下內容:
<!-- ======================== 單點登錄開始 ======================== --> |
</tr>
</tbody>
</table>
</div>
|
<!-- 用于單點退出,該過濾器用于實現單點登出功能,可選配置--> |
</tr>
</tbody>
</table>
</div>
|
<listener> |
</tr>
</tbody>
</table>
</div>
|
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</td>
</tr>
</tbody>
</table>
|
</listener> |
</tr>
</tbody>
</table>
</div>
|
|
</tr>
</tbody>
</table>
</div>
|
<!-- 該過濾器用于實現單點登出功能,可選配置 --> |
</tr>
</tbody>
</table>
</div>
|
<filter> |
</tr>
</tbody>
</table>
</div>
|
<filter-name>CAS Single Sign Out Filter</filter-name> |
</tr>
</tbody>
</table>
</div>
|
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> |
</tr>
</tbody>
</table>
</div>
|
</filter> |
</tr>
</tbody>
</table>
</div>
|
<filter-mapping> |
</tr>
</tbody>
</table>
</div>
|
<filter-name>CAS Single Sign Out Filter</filter-name> |
</tr>
</tbody>
</table>
</div>
|
<url-pattern>/*</url-pattern> |
</tr>
</tbody>
</table>
</div>
|
</filter-mapping> |
</tr>
</tbody>
</table>
</div>
|
|
</tr>
</tbody>
</table>
</div>
|
<filter> |
</tr>
</tbody>
</table>
</div>
|
<filter-name>CAS Filter</filter-name> |
</tr>
</tbody>
</table>
</div>
|
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> |
</tr>
</tbody>
</table>
</div>
|
<init-param> |
</tr>
</tbody>
</table>
</div>
|
<param-name>casServerLoginUrl</param-name> |
</tr>
</tbody>
</table>
</div>
|
<param-value>https://cas.baishi.com:8443/cas/login</param-value> |
</tr>
</tbody>
</table>
</div>
|
</init-param> |
</tr>
</tbody>
</table>
</div>
|
<init-param> |
</tr>
</tbody>
</table>
</div>
|
<param-name>serverName</param-name> |
</tr>
</tbody>
</table>
</div>
|
<param-value>http://app1.baishi.com:18080</param-value> |
</tr>
</tbody>
</table>
</div>
|
</init-param> |
</tr>
</tbody>
</table>
</div>
|
</filter> |
</tr>
</tbody>
</table>
</div>
|
<filter-mapping> |
</tr>
</tbody>
</table>
</div>
|
<filter-name>CAS Filter</filter-name> |
</tr>
</tbody>
</table>
</div>
|
<url-pattern>/*</url-pattern> |
</tr>
</tbody>
</table>
</div>
|
</filter-mapping> |
</tr>
</tbody>
</table>
</div>
|
<!-- 該過濾器負責對Ticket的校驗工作,必須啟用它 --> |
</tr>
</tbody>
</table>
</div>
|
<filter> |
</tr>
</tbody>
</table>
</div>
|
<filter-name>CAS Validation Filter</filter-name> |
</tr>
</tbody>
</table>
</div>
|
<filter-class> |
</tr>
</tbody>
</table>
</div>
|
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> |
</tr>
</tbody>
</table>
</div>
|
<init-param> |
</tr>
</tbody>
</table>
</div>
|
<param-name>casServerUrlPrefix</param-name> |
</tr>
</tbody>
</table>
</div>
|
<param-value>https://cas.baishi.com:8443/cas</param-value> |
</tr>
</tbody>
</table>
</div>
|
</init-param> |
</tr>
</tbody>
</table>
</div>
|
<init-param> |
</tr>
</tbody>
</table>
</div>
|
<param-name>serverName</param-name> |
</tr>
</tbody>
</table>
</div>
|
<param-value>http://app1.baishi.com:18080</param-value> |
</tr>
</tbody>
</table>
</div>
|
</init-param> |
</tr>
</tbody>
</table>
</div>
|
</filter> |
</tr>
</tbody>
</table>
</div>
|
<filter-mapping> |
</tr>
</tbody>
</table>
</div>
|
<filter-name>CAS Validation Filter</filter-name> |
</tr>
</tbody>
</table>
</div>
|
<url-pattern>/*</url-pattern> |
</tr>
</tbody>
</table>
</div>
|
</filter-mapping> |
</tr>
</tbody>
</table>
</div>
|
|
</tr>
</tbody>
</table>
</div>
|
<!-- |
</tr>
</tbody>
</table>
</div>
|
該過濾器負責實現HttpServletRequest請求的包裹, |
</tr>
</tbody>
</table>
</div>
|
比如允許開發者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。 |
</tr>
</tbody>
</table>
</div>
|