Cas服務器端和客戶端的配置
服務器端的配置:
1. 所需的環境:
· Tomcat7.2
· JDK6
· CAS Service 版本 cas-server-3.4.8-release
· CAS Client版本 cas-client-3.2.1-release
2. 用JDK自帶的keytool生成證書
在cmd環境下輸入:
keytool -genkey -alias smalllove -keyalg RSA -keystore D:/keys/smallkey
此命令是生成一個證書,其中smalllove是證書別名(我配的是項目的名稱)先在d盤下新建一個keys的文件夾
3. 導出證書
C:\>keytool -export -file d:/keys/small.crt -alias smalllove -keystore d:/keys/smallkey
4. 把證書導入到客戶端JDK中。
keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove
到此證書導入成功。
注意:在此步有可能出現如下錯誤
C:\>keytool -import -keystore C:\Java\jdk1.6.0_21\lib\security\cacerts -file D:/keys/small.crt -alias smalllove
輸入keystore密碼:
keytool錯誤: java.io.IOException: Keystore was tampered with, or password was incorrect
本次錯誤的解決方法是,把%JAVA_HOME%\lib\security下的cacerts文件刪除掉,在執行。
5. 把cas.war文件拷貝的%TOMCAT_HOME%\webapp下
6. 修改server.xml
7. 以上配置完成訪問http://yourhost:8443/cas出現一下頁面
出現
證明服務器配置成功
==============================================================================================
客戶端配置:
把一下代碼考到項目的pom.xml中
<dependency> <groupId>org.jasig.cas.client</groupId> <artifactId>cas-client-core</artifactId> <version>3.2.1</version> </dependency>
在客戶端項目的web.xml配置過濾器
<!-- ======================== 單點登錄開始 ======================== --> <!-- 用於單點退出,該過濾器用於實現單點登出功能,可選配置 --> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <!-- 該過濾器用於實現單點登出功能,可選配置。 --> <filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器負責用戶的認證工作,必須啓用它 --> <filter> <filter-name>CASFilter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://www.travel.com:8443/cas/login</param-value> <!--這裏的server是服務端的IP --> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://www.travel.com:8080</param-value> ① </init-param> </filter> <filter-mapping> <filter-name>CASFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器負責對Ticket的校驗工作,必須啓用它 --> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>https://www.travel.com:8443/cas</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://www.travel.com:8080</param-value>② </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器負責實現HttpServletRequest請求的包裹, 比如允許開發者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。 --> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class> org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 該過濾器使得開發者可以通過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登錄名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 --> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- ======================== 單點登錄結束 ======================== -->
常見問題說明:
錯誤一、
若出現以上錯原因是:你在客戶端的web.xml中①,②的配置有誤。
錯誤二、
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
若出現次錯誤是有與你客戶端的證書有問題。重新導入你證書。
注意:
拷到web.xml裏的必須這個,其餘的看情況
第一個地址是服務端的地址
第二地址的本機地址,都採用ip格式
建立服務端與客戶端的連接
在cmd下編譯InstallCert.java(javacInstallCert.java)
java InstallCert服務器端的ip地址:8443 + 客戶機端的密碼
運行成功則建立連接,便可重新啓動本機服務,訪問地址(注意:在做本步操作時,要注意cmd中執行語句的所在位置,要保證當前所在位置之後只有一個jre文件夾,否則將會出現NodefFoundError)。