在liferay portal中集成CAS非常容易
1拷貝cas java client 的jar包到liferay\WEB-INF\lib下
2修改common\lib\ext\portal-ejb.jar\里的文件system.properties
將poratl.properties里
auto.login.hooks=com.liferay.portal.auth.BasicAutoLogin,com.liferay.portal.auth.CASAutoLogin
3 修改liferay\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://192.168.210.79:7443/CASServer/login</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://192.168.210.79:7443/CASServer/serviceValidate</param-value>
</init-param>
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>localhost</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
CAS安裝- -
看了網上很多CAS安裝的步驟,結合自己的經驗總結如下:
一、配置Tomcat,啟用SSL協議。
1.在CAS要安裝的機器上(也就是服務端)為Tomcat生成用于SSL通訊的密鑰:keytool -genkey -alias tomcat -keyalg RSA,輸入密鑰密碼和相應參數,(注意:第一個參數CN一定要輸入CAS安裝機器名,其他參數就隨便了),結果是在用戶目錄中創建了名為.keystore的密鑰文件。
2.從服務端導出密鑰文件:keytool -export -file server.crt -alias tomcat,輸入上一步中的密碼,結果在當前目錄生成server.crt密鑰文件。(注意:這個文件是要導入客戶端的JVM上的)
3.為客戶端的JVM導入密鑰:keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file server.crt -alias tomcat,輸入密碼(注意:這里的密碼不是上面設定的密碼,而是changeit),將創建cacerts文件。
4.修改服務端的Tomcat配置文件server.xml,去掉對于SSL的注釋,即開放8443端口,注意這里需要在connector字段中加入keystorePass="password"參數,password即為上面幾步中涉及到的密碼,keystoreFile=".keystorePath",.keystorePath即為在第一步中生成的文件.keystore的全路徑,如/usr/java/bin/.keystore。
5.啟動Tomcat,測試https://server:8443/是否是需經過驗證方可訪問(注意:server為服務端的IP地址或機器名)。
二、部署CAS Server 2.0.12到Tomcat
1.一種簡單的方法是將下載包中的cas.war文件直接復制到Tomcat的webapps目錄下。
2.另外一種方法,從sourceforge上找到ESUP-Portail CAS Generic Handler項目,利用esup-cas-quick-start生成一個最簡的TOMCAT,詳見我的下一篇文章。
3.啟動Tomcat,測試https://server:8443/cas,是否可訪問CAS主頁面(注意:server為服務端的IP地址或機器名)。
三、部署CAS Client 2.0.11到Servlet-Examples
1.利用Servlet-Examples實例進行測試,將下載包中的casclient.jar文件復制到Servlet-Examples中WEB-INF目錄的lib下,這里需要手工建立lib目錄。
2.修改Servlet-Examples的配置文件web.xml,加入以下的過濾器:
<!-- CAS Filters -->
<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://server:8443/cas/login</param-value>
</init-param><!--這里的server是服務端的IP-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.validateUrl</param-name>
<param-value>https://serName:8443/cas/proxyValidate</param-value>
</init-param><!--這里的serName是服務端的主機名,而且必須是-->
<init-param>
<param-name>edu.yale.its.tp.cas.client.filter.serverName</param-name>
<param-value>client:port</param-value><!--client:port就是需要CAS需要攔截的地址和端口,一般就是這個TOMCAT所啟動的IP和port-->
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
四、測試
1.啟動Tomcat,定位到Servlet-Examples應用,點擊Execute;
2.瀏覽器跳轉至CAS登錄首頁,注意在URL中已經附上了Servlet-Examples的Service名
3.輸入用戶名和密碼,這里沒有對其驗證條件做修改,因此只要用戶名和密碼相同即可通過驗證。
4.驗證通過后瀏覽器又重新定位至Servlet-Examples并顯示該Servlet的內容。
5.點擊Http Header的Servlet應用,可以看到里面對當前用戶的用戶名信息做了記錄。
6.以后訪問Servlet-Examples應用都無需再次輸入用戶名和密碼了。
至此,CAS Server和Client已經在Tomcat上成功部署與配置,并達到了預期的SSO效果。