cas_client之代理配置

本环境基于cas3.4.2进行配置,3个tomcat环境:单点登录tomcat、代理tomcat和被代理tomcat。目的是通过代理app1访问被代理app2,此配置完全根据源代码分析而来(因此基础好的直接读源代码研究更好)。

1、单点登录tomcat发布配置,网上有很多资料,不在赘述。

2、代理app配置:网上有说

AuthenticationFilter和Cas20ProxyReceivingTicketValidationFilter2个过滤器顺序需要调换,其实是错误的,把握好以下红色字体足以。

proxyCallback网上介绍的很草率,这里只需要在代理端新建一个servlet作为代理url即可,内部逻辑什么都不用做。
<!-- SSO配置 -->
<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://127.0.0.1:8081/tjsso/login</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://127.0.0.1:8080</param-value>
    </init-param>
</filter>

<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://127.0.0.1:8081/tjsso</param-value>
    </init-param>
    <init-param>
        <param-name>serverName</param-name>
        <param-value>http://127.0.0.1:8080</param-value>
    </init-param>
    <init-param>
        <param-name>useSession</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>redirectAfterValidation</param-name>
        <param-value>true</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 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>
<filter-mapping>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<!--web定义的代理回调-->

3、被代理app配置:

  <!-- SSO配置 -->
<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://127.0.0.1:8081/tjsso/login</param-value>
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>http://127.0.0.1:8080</param-value>
  </init-param>
</filter>
<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://127.0.0.1:8081/tjsso</param-value>
  </init-param>
  <init-param>
    <param-name>serverName</param-name>
    <param-value>http://127.0.0.1:8080</param-value>
  </init-param>
  <init-param>
    <param-name>useSession</param-name>
    <param-value>true</param-value>
  </init-param>
  <init-param>
    <param-name>redirectAfterValidation</param-name>
    <param-value>true</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 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>
<filter-mapping>
  <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
  <filter-name>CAS Assertion Thread Local Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

4、实例验证,在代理端新建一个servlet,我这里就是上述配置的

casProxyTest

源码如下:

com.supermap.proxy;

org.jasig.cas.client.authentication.AttributePrincipal;
org.jasig.cas.client.util.AssertionHolder;

javax.servlet.ServletException;
javax.servlet.http.HttpServlet;
javax.servlet.http.HttpServletRequest;
javax.servlet.http.HttpServletResponse;
java.io.BufferedReader;
java.io.IOException;
java.io.InputStreamReader;
java.io.OutputStream;
java.net.HttpURLConnection;
java.net.URL;
java.net.URLEncoder;

CasProxyTestServlet HttpServlet {
    doGet(HttpServletRequest req, HttpServletResponse resp)
            ServletException, IOException {
        (req, resp);
    }

    (HttpServletRequest req, HttpServletResponse resp)
            ServletException, IOException {
        AttributePrincipal principal = AssertionHolder.().getPrincipal();
        String proxyTicket = principal.getProxyTicketFor();
        URL url = URL(+ URLEncoder.(proxyTicket, ));
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setDoOutput();
        conn.setDoInput();
        OutputStream out = conn.getOutputStream();
        out.write((+URLEncoder.(proxyTicket, )).getBytes());
        out.flush();
        out.close();
        BufferedReader br = BufferedReader(InputStreamReader(conn.getInputStream(), ));
        StringBuffer content = StringBuffer();
        String line = ;
        ((line=br.readLine()) != ) {
            content.append(line).append();
        }
        resp.getWriter().write(content.toString());
    }
}

总结:其中的原理在网上有很多资料介绍,最主要还是需要个人去研读源代码,把握核心。

时间: 2024-11-05 12:26:33

cas_client之代理配置的相关文章

Python+Nginx实现邮件POP、IMAP、SMTP代理配置介绍

说到Python,大家都知道,是在运维方面的管理人员需要掌握的一门技术,为什么这么说呢,在运维方面Python开发语言应用比较广,以致可以帮助管理员提高工作效率,具体我就不多少了,接着我们说说邮件代理,因为公司的邮箱系统是使用是IBM的Domino Lotus服务,如果对Lotus了解的都知道,Lotus是文件数据库类型的服务器类型,用户的所有邮箱数据库都是独立的xxx.nsf,而通过数据库模板xxx.ntf进行创建或者定时刷新数据,来保证数据库的额稳定性.而当用户数量多的话,就需要创建多台邮件

Nginx安装和反向代理配置

Nginx安装和反向代理配置 Nginx安装需要一些准备工作. 安装gcc等 yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel 还需要安装pcre,PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 Perl兼容的正则表达式库. yum -y install pcre 下载Nginx源码包,这里选择是1.7.8版本.并且解压缩,并且编译 wge

Apache正向代理与反向代理配置

Apache正向代理与反向代理配置 正向代理示例配置: ProxyRequests On ProxyVia On <Proxy *> Order deny,allow Deny from all Allow from 192.168.0 </Proxy> CacheEnable disk / CacheRoot "/var/cache/mod_proxy" 反向代理示例配置: ProxyRequests Off <Proxy *> Order den

Android SDK Manager 更新代理配置

Android SDK Manager 更新代理配置 启动 Android SDK Manager ,打开主界面,依次选择「Tools」.「Options...」,弹出『Android SDK Manager - Settings』窗口: 在『Android SDK Manager - Settings』窗口中,在「HTTP Proxy Server」和「HTTP Proxy Port」输入框内填入 mirrors.neusoft.edu.cn 和 80,并且选中「Force https://.

3proxy 二级代理配置样例

适应情况: 有时,我们的机器HOST-A只能通过代理服务器HOST-B才可以访问internet, 而与我们相连的机器HOST-C也需要访问internet, 但是HOST-C却不能直接访问HOST-A,此时可以以HOST-A为桥梁(二级代理服务器),让HOST-C访问internet,以下是开源3proxy做为二级代理服务器的配置样例 ###########################################################################    3

BIEE邮件代理配置

 一.邮件服务器的配置 : 点击"应用 " 并"激活更改" 重启应用 二.代理的配置  选择创建代理 ,能看到代理的具体配置页:主要用到的一般信息.调度.传送内容.收件人和目标.至于条件与操作的话有兴趣的可以自己研究. 一般信息页这个Tab页,主要设定代理的"优先级"与"运行身份",这里根据实际情况进行选择. 调试页面设置代理具体是如何运作的,可以不启用也可以指定具体的执行频率等,具体根据实际情况进行选择. 传送内容页面主要设

在ubuntu设置代理配置自动脚本

在学校使用看Coursera一直都是超级慢的,不知道是不是学校网络的缘故,但是以前用win7看的时候,看到有人说在IE里设置一个代理配置自动脚本上coursera就炒鸡快的了.试验了一下果然快了好多,妈妈再也不用担心我看coursera会卡死了---结果用ubuntu的时候,就又开始卡了...折腾了一会儿...花现其实很简单嘛- 以ubuntu14.04为例,系统设置->网络->网络代理,把方法改成自动,然后再输入如下,速度又是杠杠的了--- 然后再点应用到整个系统,输入密码就完事了---

【vue2.0】去掉前面#,window下nginx代理配置

1.定义路由,设置路由配置 const routes = [ { path: '/login', component: require('./components/login/index.vue') }, { // = = = => /home path: '/home', component: Home }, { path: '/', redirect: '/home' }, { path: '*/*', redirect: '/home' }]; const router = new Vue

Apache反向代理配置

Apache反向代理配置方法如下 1.打开Apache的配置文件httpd.conf,找到下面的内容,将注释去掉,以启动代理模块 LoadModule proxy_module modules/mod_proxy.so  LoadModule proxy_http_module modules/mod_proxy_http.so 2.在配置文件httpd.conf最后添加 <IfModule mod_proxy.c> ProxyRequests off <Proxy /> Orde