我是靠谱客的博主 昏睡音响,这篇文章主要介绍cas代理模式的原理及配置,现在分享给大家,希望可以做个参考。

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

cas代理模式的原理已经有大牛在很多年前就分析过了,剖析CAS Proxy的设计原理(http://www.blogjava.net/security/archive/2006/04/26/SSO_CASProxy.html )。 这篇文章把cas代理模式的原理和应用场景都说的很清楚,只是这么多年过去了,它介绍配置方式已经不能再使用了。
原理是不会总变化的,大牛分析的很透彻,本文主要目的是记录新的配置方式,适用于cas-server-3.4.11,cas-client-core-.3.21。

如果上面大牛的配图不太好看明白的话,可以看看下面的两个图帮忙你理解cas代理模式原理,分别对应其文章里的part1和part2。
 

图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://blog.csdn.net/emon123/article/details/6285549 可惜这篇文章没有提HttpBasedServiceCredentialsAuthenticationHandler.requireSecure=false的事,否则我就不写本文了。

转载于:https://my.oschina.net/mashiguang/blog/69312

最后

以上就是昏睡音响最近收集整理的关于cas代理模式的原理及配置的全部内容,更多相关cas代理模式内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部