CAS4搭建HTTP环境

来源:互联网 发布:通达信炒股软件官网 编辑:程序博客网 时间:2024/05/16 07:49

1. 前言

CAS 默认认证方式使用的是HTTPS协议,一般对安全性不高的话建议取消改成HTTP方式。因为,开启的话会经常提示证书过期、需要用户确认等,客户觉得CAS证书的提示太烦了,当前有需要的可以开启HTTPS。

所以,本文会逐步介绍取消HTTPS协议的方法。

2. CAS-SERVER服务端

取消HTTPS协议,需要修改3个配置文件。

(1) cas-server\WEB-INF\deployerConfigContext.xml 

<!--Required for proxy ticket mechanism. -->

<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" />

(2) 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验证。

(3) cas-server\WEB-INF\spring-configuration\ warnCookieGenerator.xml

<beanid="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验证。

CAS4的默认用户配置在 deployerConfigContext.xml配置文件中,用户名密码为casuser/Mellon。

3. CAS-CLIENT-客户端

配置CAS客户端,只修改WEB-INF\web.xml文件即可。

<!--========================单点登录开始======================== -->

<!--用于单点退出,该过滤器用于实现单点登出功能,可选配置 -->

<listener>

<listener-class>

org.jasig.cas.client.session.SingleSignOutHttpSessionListener

</listener-class>

</listener>

<!--该过滤器用于实现单点登出功能,可选配置。 -->

<filter>

<filter-name>CASSingle SignOutFilter</filter-name>

   <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>CASSingle SignOutFilter</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>

           <param-value>http://localhost:18080/cas-server/login</param-value>

        </init-param>

        <init-param>

           <param-name>serverName</param-name>

           <param-value>http://localhost:8081</param-value>

        </init-param>

    </filter>

    <filter-mapping>

       <filter-name>CASFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!--该过滤器负责对Ticket的校验工作,必须启用它 -->

    <filter>

       <filter-name>CASValidationFilter</filter-name>

        <filter-class>

          org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter

        </filter-class>

        <init-param>

            <param-name>casServerUrlPrefix</param-name>

           <param-value>http://localhost:18080/cas-server</param-value>

        </init-param>

        <init-param>

           <param-name>serverName</param-name>

           <param-value>http://localhost:8081</param-value>

        </init-param>

    </filter>

    <filter-mapping>

       <filter-name>CASValidationFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->

    <filter>

       <filter-name>CASHttpServletRequestWrapperFilter</filter-name>

        <filter-class>

           org.jasig.cas.client.util.HttpServletRequestWrapperFilter

        </filter-class>

    </filter>

    <filter-mapping>

       <filter-name>CASHttpServletRequestWrapperFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->

    <filter>

        <filter-name>CASAssertion ThreadLocalFilter</filter-name>

       <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>

    </filter>

    <filter-mapping>

        <filter-name>CASAssertion ThreadLocalFilter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <!-- ========================单点登录结束 ======================== -->


4. 补充说明

单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 

如果需要应用到项目中,还需要许多个性化的订制,比如登陆页的美化、通过数据库认证、服务端与客户端用户信息的交互等。

cas/WEB-INF/view/jsp/default/ui的一些JSP文件,每一个文件的用途文件名已经区分了:

登录界面:casLoginView.jsp

登录成功:casGenericSuccess.jsp

登出界面:casLogoutView.jsp




0 0
原创粉丝点击