参考博客
http://www.cnblogs.com/adolfmc/archive/2012/07/16/2593291.html
准备工作:
1、cas服务器:http://cas:8443/login 实现地址为: http://www.cnblogs.com/fanruili/p/5634138.html
2、准备两个用户端用tomcat:tomcat-app1 和tomcat-app2 利用tomcat自带的examples项目。
3、启动 cas服务器
测试步骤:
1:下载cas-client。 下载地址:http://www.cnblogs.com/fanruili/p/5634138.html
2:解压后将cas-client-3.2.1-release\cas-client-3.2.1\modules下的cas-client-core-3.2.1.jar包放到tomcat-app1\webapps\examples\WEB-INF\lib下 。tomcat-app2同理
3:在tomcat-app1\webapps\examples\WEB-INF\web.xml下追加以下代码
<listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter> <filter-name>CAS Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>https://cas:8443/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://127.0.0.1:28080/</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--该过滤器负责对Ticket的校验工作,必须启用它--> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class> org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>http://cas:8443</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://127.0.0.1:28080</param-value> </init-param> </filter> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--该过滤器负责实现HttpServletRequest请求的包裹,比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得sso登录用户的登录名,可选配置--> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!--该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名.比如AssertionHolder.getAssertion().getPrincipal().getName()--> <filter> <filter-name>CAS Assertion Thread Local Filter</filter-name> <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> </filter> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4、将tomcat-app1/conf/server.xml下修改以下代码
将原来的8080改为18080 8443->18443 8009->18009
8005->18005 如果在同一台机器上测试的话,必须修改server.port,不然会出现 JVM in use的错误
5、启动tomcat-cas
启动tomcat-app1
出现问题:Tomcat: Error filterError
解决方案:tomcat控制台的错误信息,总是很简单。这时候就需要查看tomcat的日志了。一般tomcat的日志会是在/logs文件夹下。查看当天的tomcat的日志。会看到错误信息。根据错误信息解决问题。
同理,tomcat-app2同tomcat-app1一样设置。启动tomcat-app2
6、测试
cas的状态
http://localhost:18080/examples/servlets 得到如下
http://localhost:28080/examples/servlets 得到如下:
在127.0.0.1:18080(app1)下验证cas(用户名与密码相同即可).可以看到以下页面。说明cas验证成功。
在127.0.0.1:28080(app2) ,cas验证页面刷新得到(没有输入用户名与密码):
说明cas验证成功。app1通过cas只要登录一次,就可以无障碍访问app2。