当前位置: Coin163 >>

cas代理(proxy)模式的原理及配置

2013-09-30 | 所属分类:cas proxy 原理 配置
本文主要目的是记录CAS新的配置方式,适用于cas-server-3.4.11,cas-client-core-.3.21。
下面的两个图可以理解cas代理模式原理。
 
 
  图1
图1主要描述cas-client-1获得pgt的过程,并没有与cas-client-2交互。

  
图2
图2描述cas-client-1代理browser与cas-client-2交互的过程

 在贴出cas代理模式配置代码之前,要先说一下https,网上很多文章在说cas的时候都先讲配置https的过程,又是配公钥又是配私钥,弄了半天才开始进入正题讲cas,其实如果只是想了解cas原理,学习过程中完全没有必要搞那么多https,使用https也不利于用Fiddler之类的工具跟踪调用流程,只需要先把cas的https关掉就ok了。
如何关掉https?
1,修改ticketGrantingTicketCookieGenerator.xml文件,修改后如下:
<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="false"
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />

2,修改deployerConfigContext.xml,authenticationHandlers下有一个org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler,在,修改后如下:
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient" 
p:requireSecure="false"/>
比原来增加了一个属性配置p:requireSecure="false",这个属性默认值是true,代表cas-server在回调代理应用时使用https,以加强安全。
一定要注意,cas代理模式如果不用https的话,一定要配置requireSecure=false,我在这上面浪费不少时间。

ok,下面开始配置让cas-client-1代理cas-client-2,也就是cas-client-1会调用cas-client-2里的受限接口。
修改cas-client-1里的web.xml,下面只贴出Cas20ProxyReceivingTicketValidationFilter的配置和filter-mapping的配置。注意/proxyCallback这个filter-mapping一定要配在其它mapping之前。
<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/cas-server-webapp</param-value>
    </init-param>
    <init-param>
      <param-name>serverName</param-name>
      <param-value>http://localhost:81</param-value>
    </init-param>
    <init-param>
      <param-name>proxyCallbackUrl</param-name>
      <param-value>http://localhost:81/cas-proxy/proxyCallback</param-value>
    </init-param>
    <init-param>
      <param-name>proxyReceptorUrl</param-name>
      <param-value>/proxyCallback</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/proxyCallback</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>CAS Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

还需要配置cas-client-2的web.xml,使cas-client-2允许其它应用代理它,如下:
<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/cas-server-webapp</param-value>
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>http://localhost:81</param-value>
  </init-param>
  <init-param>
        <param-name>acceptAnyProxy</param-name>
        <param-value>true</param-value>
    </init-param> 
</filter>
本文原文地址http://my.oschina.net/mashiguang/blog/69312

关于Coin163网站地图

Copyright 2012-2013 Coin163.com ( Coin163 ) All Rights Reserved