先說寫心情一下:
去年在第一家公司做的那個項目使用是CAS SSO單點登錄,但是由於不是我做的那塊,所以一直沒有太深入的研究,這段日子比較閒,從新學習一下CAS SSO單點登錄吧,門戶網站等大型網站都會用的到的,所以這的確是個不可缺少的技術。這兩天在配置CAS SSO的時候遇到了很多的問題,雖然有過無助,但堅持一下別放棄,最終總會弄成功的!
-------------------------------------------------------------------------------------------------------------------------------
列一列遇到問題的過程:
先是:Tomcat配置完https後,啓動報錯。
然後就是:正常啓動,但是無法跳轉到CAS登錄頁面,也無法以https訪問。
再就是:可以正常跳轉到CAS的登錄頁面,但點擊登錄後,跳轉到成功頁面的時候報500錯誤,說沒有導入證書。
-------------------------------------------------------------------------------------------------------------------------------
網上找了好多的資料,但是幾乎都配置不成功,不是缺這個就是少那個。這裏我就寫寫我的筆記,絕對保證你能夠配置成功!好了,心情就說到這吧,總之成功的那一刻心情是很爽的。
轉載請註明出處:http://liangjian103.iteye.com/blog/1129056
需要介質
1、 客戶端介質cas-client-2.0.11.zip
2、 服務端介質cas-server-3.4.8-release.zip
3、 Tomcat6.0
4、 jdk1.5.0_12
下載地址:
http://downloads.jasig.org/cas-clients/
http://downloads.jasig.org/cas/
將cas-server-3.4.8-release.zip\cas-server-3.4.8\modules下的cas-server-webapp-3.4.8.war拷貝到Tomcat的webapp目錄下,重命名爲cas.war
一、服務端配置(以下配置我已經寫了批處理。):
修改Tomcat的密碼爲:changeit,因爲下面統一都用的這個密碼。
由於CAS只能識別域名,所以只能修改C:\WINDOWS\system32\drivers\etc\hosts,加入:127.0.0.1 sso.tomcat.com
由於以下我使用批處理實現,也就不需要一步步的回車設置證書的信息了:
服務端憑證要配置域名 例如:CN=sso.tomcat.com 此處爲hosts中配置的。這個名字要與下面配置客戶端的web.xml中的過濾器裏寫到的一致,下面會再做解釋。
set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
set TOMCAT_HOME=D:\Program Files\Apache Software Foundation\Tomcat 6.0
set SERVER_DN="CN=sso.tomcat.com, OU=share, O=share, L=sz, S=gd, C=CN"
set KS_PASS=-storepass changeit
keytool -delete -alias tomcat -file client.cert %KS_PASS% -keystore server.keystore
keytool -delete -alias tomcat1 -trustcacerts -file client.cert %KS_PASS% -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -keypass
changeit
keytool -genkey -alias tomcat -keyalg RSA -keystore server.keystore -dname %SERVER_DN% %KS_PASS% -keypass changeit
keytool -export -alias tomcat -file client.cert %KS_PASS% -keystore server.keystore
keytool -import -alias tomcat1 -trustcacerts -file client.cert %KS_PASS% -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -keypass
changeit -noprompt
mkdir "%TOMCAT_HOME%\keystore\"
copy server.keystore "%TOMCAT_HOME%\keystore\"
@echo off
echo "-----------------------------------------------------------"
echo 請配置%TOMCAT_HOME%\conf\server.xml文件。
echo "<Connector protocol=org.apache.coyote.http11.Http11NioProtocol"
echo "port=8443 minSpareThreads=5 maxSpareThreads=75"
echo "enableLookups=true disableUploadTimeout=true"
echo "acceptCount=100 maxThreads=200"
echo "scheme=https secure=true SSLEnabled=true"
echo "clientAuth=false sslProtocol=TLS"
echo "keystoreFile=keystore/server.keystore keystorePass=changeit"
echo "/>"
echo 當前JAVA_HOME=C:\Program Files\Java\jdk1.5.0_12
echo 當前TOMCAT_HOME=D:\Program Files\Apache Software Foundation\Tomcat 6.0
echo 證書位置:%TOMCAT_HOME%\keystore\server.keystore
echo 以上爲CAS服務端的配置。接下來配置SSO客戶端。
echo "-----------------------------------------------------------"
color 3
echo. && pause
保存爲:生成證書配置.bat,雙擊執行。
修改Tomcat 6.0\conf\server.xml文件:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="keystore/server.keystore" keystorePass="changeit"
/>
這個配置也是困擾我好長時間,但最終測試通過了的。
這裏需要注意,這個分別爲證書的路徑和密碼,keystore/server.keystore這個目錄和文件會在上面的批處理中創建,密碼默認爲:"changeit"
keystoreFile="keystore/server.keystore" keystorePass="changeit"
二、客戶端配置:
在你的應用中,修改web.xml文件,加入SSO過濾器
<!-- SSO-Start -->
<filter>
<filter-name>CAS Filter</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://sso.tomcat.com:8443/cas/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://sso.tomcat.com:8443/cas/proxyValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>192.168.9.203:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>*.htm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- SSO-END -->
啓動Tomcat服務,訪問一下你SSO過濾的頁面便可以跳轉到CAS的登錄頁面。登錄成功後,會自動跳轉到目標頁面。如果A應用和B應用都加入了SSO過濾器,這樣,他們就都會跳轉到CAS認證服務器去登錄,當其中一個應用在CAS上登錄後,另一個應用則會自動登錄。