在做 单点登录过程中,经历了一些问题及解决方案,分享出来,可以让你少走弯路。
主要分为两方面内容:基于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集成
这个过程正在进行中,遇到的问题及解决方案稍后会更新到这里。