cas實現sso注意的2個問題
弄了一下午的cas安裝終于成功了,,現在將步驟敘述一下
下載
????????
cas-server-3.0.4.zip??????????????
http://www.ja-sig.org/downloads/cas/cas-server-3.0.4.zip
cas-client-2.0.11.zip?
http://www.ja-sig.org/downloads/cas-clients/cas-client-2.0.11.zip
環境為 winxp? tomcat5.5.17? jdk1.5.0_05
1. 生成服務端證書
keytool -genkey -alias casserver -keyalg RSA -keystore tomcat.jks
CN:localhost
其他的隨便??
這里要注意姓名必須是服務器的域名 由于我是在本機所以是localhost
如果不這樣寫就會報如下異常:
java.io.IOException: HTTPS hostname wrong:? should be <localhost>
這個異常出現在創建證書的第一個問題 姓名。其實這個“姓名”應該是域名。比如說localhost或是blogjava.net之類的。輸成了姓名,和真正運行的時候域名不符,就會出錯。瀏覽器無所謂,彈出一個對話框,用戶按一下就行了。但http client就直接拋出了異常。--google出來的
2. 導出證書
keytool -export -file cas.cer -alias?tomcat -keystore tomcat.jks
3.把導出的證書導入到jre/lib/security的cacerts中
這里又有一點要注意的?? 可能由于我的jre在線升級過一次 現在的工作的jre目錄在C:\Program Files\Java\jre1.5.0_06\ 所以要把證書導入到C:\Program Files\Java\jre1.5.0_06\lib\security的cacerts中去
我一開始就是因為 導入到了%JAVA_HOME%的jre中 結果弄了半天都不成功報異常如下:
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
4.配置tomcat使用ssl
<Connector port="8443" maxHttpHeaderSize="8192"
?????????????? maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
?????????????? enableLookups="false" disableUploadTimeout="true"
?????????????? acceptCount="100" scheme="https" secure="true"
?????????????? clientAuth="false"http://單向SSL
?????????????? keystoreFile="C:\tomcat.jks" //我生成的keystore存放在c盤
?????????????? sslProtocol="TLS" />
5.
部署CAS應用
?
解壓
cas-server-
6.客戶端配置
下載cas-client-2.0.11.zip
把
java/lib/casclient.jar考到 你所發布的webapp的WEB-INF/lib下
修改WEB-INF/web.xml 在里面添加過濾器
??? <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>
??????? <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>
??????? <init-param>
????????? <param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
????????? <param-value>localhost:8443</param-value>
??????? </init-param>
??? </filter>
???
??? <filter-mapping>
??????? <filter-name>CASFilter</filter-name>
??????? <url-pattern>/*</url-pattern>
??? </filter-mapping>
把里面的localhost換成域名
8443換成你所使用的端口
接著連接
https://localhost:8443/app1
?? //app1是你要實現sso的web應用
接著頁面就會跳轉到cas的登陸頁面 就像你在第5步看到的頁面一樣
隨便用一個用戶名登陸 只要 用戶名和密碼一樣就可以登陸
可以在app2上重復步驟6 這樣只要在app1上登陸后 再連接app2的url就不用再次登陸了
這就是單點登陸了。
?其實是一個很簡單的事情 但是過程中要注意 步驟1和3
?
?
?
?
posted @ 2006-07-24 17:50 狒狒 閱讀(4212) | 評論 (3) | 編輯 收藏