CAS单点登录HTTP协议版本配置指南
CAS单点登录配置(HTTP协议版本)
一、CAS版本:
服务端是cas-server-3.4.7。这里不需要源代码,解压zip包中的cas-server-webapp-3.4.7.war出来即可。
客户端是cas-client-3.2.0。这里主要用到cas-client-core-3.2.0.jar包,当然在后面如果需要用到,可自行添加。Apache的日志包这里常用的包是需要的。
二、环境搭建
Tomcat6.x + JDK6.x
关于搭建基本环境,网上已经一大把:
官方WIKI:https://wiki.jasig.org/display/CASUM/Home
IBM技术社区:http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/
ITeye技术社区:http://www.iteye.com/topic/544899
还有很多就不列举了。
总体来说,使用Http协议的CAS比Https版本的步骤少了ssl的配置,然后在服务端需要修改部分配置文件即可。基本上的配置是大同小异的,下面就详细记录下来,日后参考。
三、部署配置
环境搭建完毕后,按下面的步骤,按部就班走完下面的步骤即可
1.CAS服务端配置。服务端主机名假定为sso.ican.org。
(1).端口配置。我们不使用8443,直接使用80端口,这样看上去舒服点。
进入部署CAS服务端的Tomcat的conf目录下,配置service.xml即可,主要代码如下:
注意到这里之际设置默认的主机是sso.ican.org了,另外我将下载下来的cas-server-webapp-3.4.7.war解压到Eclipse中的一个工程中去了(G:/projects/sso.ican.org/web目录下),同时把docBase指向该工程的目录下,这样可以随时在IDE中修改配置文件,比用普通的文本编辑器编辑配置文件方便很多。
基本Tomcat的配置修改到此完成了。
2.配置CAS服务应用程序的配置文件
主要有WEB-INF有cas.properties、deployerConfigContext.xml以及WEB-INF子目录spring-configuration下的ticketGrantingTicketCookieGenerator.xml、warnCookieGenerator.xml。修改这些文件后,就可以使用http协议以及80端口来访问CAS登录认证接口了。下面按顺序列出主要的修改和说明:
cas.properties文件,把localhost替换为正式的主机名sso.ican.org,以及去掉了8080端口和cas上下文目录:
ticketGrantingTicketCookieGenerator.xml文件中将cookie安全要求为false,因为我们用的是http协议而不是https协议
同样warnCookieGenerator.xml文件中也设置cookie安全要求为false,这样,我们就完成了使用HTTP协议版本的CAS服务端了。
Web.xml不需要设置任何东西,使用现成的就可以了。
3.配置CAS客户端,示例中的客户端主机名师www.easycode.com,使用8080端口访问。
CAS客户端的配置主要就是一个web.xml文件:<filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> <filter> <filter-name>CAS Authentication Filter</filter-name> <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> <init-param> <param-name>casServerLoginUrl</param-name> <param-value>http://sso.ican.org/login</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://www.easycode.com:8080</param-value> </init-param> </filter> <filter> <filter-name>CAS Validation Filter</filter-name> <filter-class>org.jasig.cas.client.validation.Cas10TicketValidationFilter</filter-class> <init-param> <param-name>casServerUrlPrefix</param-name> <param-value>http://sso.ican.org</param-value> </init-param><init-param> <param-name>serverName</param-name> <param-value>http://www.easycode.com:8080</param-value> </init-param> </filter> <filter> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> </filter> <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 Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Authentication Filter</filter-name> <url-pattern>/servlets/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Validation Filter</filter-name> <url-pattern>/servlets/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <url-pattern>/servlets/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CAS Assertion Thread Local Filter</filter-name> <url-pattern>/servlets/*</url-pattern> </filter-mapping> <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener> <servlet> <servlet-name>LogoutServlet</servlet-name> <servlet-class>sso.iss.test.LogoutServlet</servlet-class> <init-param> <param-name>casServerLogoutUrl</param-name> <param-value>http://sso.ican.org/logout</param-value> </init-param> </servlet>
详细配置可以参考这里:
https://wiki.jasig.org/display/CASUM/End-to-end+Windows+Example
我从Tomcat的示例程序中copy了servlet的例子到客户端程序中,也就是servlets目录的资源是需要登录才能访问的。
编写一些示例页面index.html,方便测试。为了验证当点登出,同时配置另外一个CAS客户端download.easycode.com。详细见附件。sso.ican.org的包太大,按照文档下载CAS的程序解压下来然后按上面的步骤修改即可