用Yale CAS Server 來實現單點登陸(SSO)
CAS (Central Authentication Service)是Yale大學的ITS開發的一套JAVA實現的開源
的SSO(single sign-on)的服務。
這里用一個簡單的例子來說明用CAS來實現單點登陸(SSO)。
Yale CAS Server 的配置過程
CAS (Central Authentication Service)是Yale大學的ITS開發的一套JAVA實現的開源
的SSO(single sign-on)的服務。該服務是以一個java web app(eg:cas.war)來進行服務的,
使用時需要將cas.war發布到一個servlet2.3兼容的服務器上,并且服務
在需要使用該服務的其他服務器(客戶),只要進行簡單的配置就可以實現SSO了。
CAS 的客戶端可以有很多種,因為驗證的結果是以XML的格式返回的,CAS的客戶端已
打包進去的有java,perl,python,asp,apache module等好幾種客戶端示例,你還可以根據
需要實現一個自己的客戶端,非常簡單!~
下面我們以tomcat 5.0 作為CAS Server(server1),另外一臺tomcat5.0 為client(client1)
為例進行說明。
1.下載cas-server和cas-client(可選,建議使用)
http://www.yale.edu/tp/cas/cas-serv
http://www.yale.edu/tp/cas/cas-clie
2.將cas-server-2.0.12.zip解壓,并將lib/cas.war拷
3.產生SERVER的證書
keytool -genkey -alias my-alias-name -keyalg RSA -keystore keystore-file
4.在server1配置tomcat使用HTTPS
$CATALINA_HOME/conf/server.xml里
<Connector className="org.apache.coyote.tomcat5.Coy
port="8443" minProcessors="5" maxProcessors="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100" debug="0" scheme="https"
secure="true">
<Factory className="org.apache.coyote.tomcat5.Coy
keystoreFile="/path/to/your/keystore-fil
keystorePass="your-password" clientAuth="false" protocol="TLS" />
</Connector>
5.在要使用CAS的客戶端client1里設置(以servlets-exampl
ServletFilter(CAS client里提供的)來實現SSO的檢查。
修改servlets-examples/WEB-INF/web.xml
<filter>
<filter-name>CASFilter</filter-name>
<filter-class>edu.yale.its.tp.cas.clie
<init-param>
<param-name>edu.yale.its.tp.cas.client.f
<param-value>https://your.cas.server.na
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.f
<param-value>https://your.cas.server.na
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.f
<param-value>your.client.server.name(e
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
6.將cas-client-2.0.11.zip解壓,把java/lib/cas
webapps/servlets-examples/WEB-INF/lib目錄下
7.導出SERVER的證書,用來給所有需要用到的客戶端導入
keytool -export -file myserver.cert -alias my-alias-name -keystore keystore-file
8.在客戶端的JVM里導入信任的SERVER的證書(根據情況有可能需要管理員權限)
keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file myserver.cert -alias my-alias-name
9.test & done.
把server1和client1分別起來,檢查啟動的LOG是否正常,如果一切OK,
http://client1:8080/servlets-examples/s
系統會自動跳轉到一個驗證頁面,隨便輸入一個相同的賬號,密碼,嚴正通過之后就會訪問
到真正的HelloWorldExample這個servlet了
更多信息請參考
http://www.yale.edu/tp/cas/
http://www-106.ibm.com/developerworks/w
文章來源:http://www.livejournal.com/users/minggo/1571.html
運行命令keytool -genkey -alias test -keyalg RSA -keystore test.cert
然后輸入密碼
然后根據提示輸入用戶名、機構名、單位名、城市名、省名、國家縮寫,最后又問你一個密碼,這個要設為與前現你輸入的密碼相同。
就在你的工作目錄生成了一個證書文件test.cert
再把這個文件拷到你的tomcat根目錄