在做 單點登錄過程中,經歷了一些問題及解決方案,分享出來,可以讓你少走彎路。
主要分爲兩方面內容:基於CAS實現單點登錄(SSO)實例講解、CAS和Shiro集成
基於CAS實現單點登錄(SSO)實例講解
配置完成之後出現的問題404錯誤
首先查看對應應用的tomcat服務器的log日誌,報錯如下:
嚴重: Exception starting filter CAS Single Sign Out Filter
java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
經過此分析,說明是log類找不到,也即系統運行需要的有關log類包沒有引入或引入錯誤,解決辦法:
將commons-logging-1.1.jar拷貝到“webapps\examples\WEB-INF\lib”下即可。
commons-logging-1.1.jar包是在cas-client-3.2.1\modules中。
證書保存位置如果在C盤
d:/tomcat.keystore是將生成的tomcat.keystore放到d盤根目錄下。注意若要放到c盤,在win7系統下,需要以管理員身份進入到命令行窗口中進行操作,否則是無法創建tomcat.keystore的。本例放到d盤下。
驗證HTTPS配置時,tomcat提示No Certificate file specified or invalid file format
在tomcat server.xml https配置中,將protocol="HTTP/1.1"替換爲protocol="org.apache.coyote.http11.Http11Protocol"
解決一臺機器同時運行多個Tomcat服務
編輯Tomcat/conf/server.xml,修改5處端口,並修改默認編碼爲utf-8(以支持中文鏈接)
示例:
<Serverport="8005"shutdown="SHUTDOWN">
<Connector port="8080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"URIEncoding='UTF-8'/>
<Connector port="8009"protocol="AJP/1.3"protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"redirectPort="8443"URIEncoding='UTF-8'/>
修改成:
<Serverport="18005"shutdown="SHUTDOWN">
<Connector port="18080"protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="18443"URIEncoding='UTF-8'/>
<Connector port="18009"protocol="AJP/1.3"protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"redirectPort="18443"URIEncoding='UTF-8'/>
CAS和Shiro集成
這個過程正在進行中,遇到的問題及解決方案稍後會更新到這裏。