首先下载cas的服务端和客户端包
http://developer.jasig.org/cas/(服务端)
http://developer.jasig.org/cas-clients/(客户端)
然后在配置完jdk等环境的情况下,我们需要两个tomcat来充当cas的服务端和客户端
解压tomcat的解压到两次,并命名不同的名称。
然后需要在环境变量中配置“CATALINA_HOME”变量,变量值为第一个tomcat的包的路径:
然后在第二个tomcat目录下修改几个文件:
1. conf/server.xml中需要将的端口修改成任意端口
2. 将访问端口8080换成非占用端口
3. 替换成任意非占用端口
然后对bin/startup.bat进行修改:
在头一行写上红框内语句,CATALINA_HOME=当前第二个tomcat的地址
同理修改shutdown.bat和catalina.bat,这样配置使两个tomcat不会互相冲突。
配置完tomcat后,在进行cas服务端的配置
首先解压服务端压缩包,将modules中的cas-server-webapp.war解压到第二个tomcat的webapps中,并对配置文件进行修改:
CAS-SERVER服务端的部署
取消HTTPS协议:
打开 cas-server\WEB-INF\deployerConfigContext.xml 文件 ,找到如下配置:
<beanid="proxyAuthenticationHandler"
class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient"/>
增加参数p:requireSecure="false",是否需要安全验证,即HTTPS,false为不采用。修改后为:
<beanid="proxyAuthenticationHandler"
class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient"p:requireSecure="false" />
打开 cas-server\WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml ,找到如下配置:
<beanid="ticketGrantingTicketCookieGenerator"class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas"/>
修改 p:cookieSecure="true" 为p:cookieSecure="false",即不开启https验证
打开 cas-server\WEB-INF\spring-configuration\warnCookieGenerator.xml ,找到如下配置:
<bean id="warnCookieGenerator"class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas"/>
修改 p:cookieSecure="true" 为p:cookieSecure="false",即不开启https验证
然后启动tomcat(用startup.bat启动即可)
输入网址:别名就是你放在webapps中的文件名
注意:cas-server4.0之前的默认验证规则:只要用户名和密码相同就认证通过,4.0之后规则改了,默认是配置在deployerConfigContext.xml配置文件中,可以看到用户名密码为casuser/Mellon。
<display-name>casclient</display-name>
<!-- 用于单点退出,该监听器用于实现单点登出功能,通知其他应用单点登出 -->
<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>CASFilter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<!-- 设置登录的URL地址 -->
<!-- 设置cas跳转的路径和端口,即cas服务端地址 --> <param-value>http://localhost:8090/cas-server/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<!-- 设置本应用的访问地址及端口 -->
<param-value>http://localhost:8080</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CASFilter</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://localhost:8090/cas-server</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://localhost:8080</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>
启动demo项目,就会自动跳转到cas服务端认证啦,注意,启动时很有可能demo会出现jar包冲突,如果发生冲突,需要demo项目所在tomcat的conf/context.xml加入如下信息:
即若jar冲突优先使用项目中的jar包。