文档章节

cas-server源代码学习(一)

卡尔码农
 卡尔码农
发布于 2016/06/03 22:34
字数 391
阅读 232
收藏 0

      最近有点闲的慌,有好几个月没有写代码了。有时候实现业务的方式都是一根筋,根据自己想要实现的方式来写,也不知道外面的世界有多精彩,今后单位可能会用到sso功能,所以找来了一个sso的源代码来看看。

     下载了cas-server和cas-client的代码,来学习学习。

     我从cas-server的web.xml着手开始,以前使用spring的时候确实不在意很多细节,今天看了看源码,感受还是很深!

     其中一个细节:

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    以前都没有这么用过,看了下源代码:

       protected Filter initDelegate(WebApplicationContext wac) throws ServletException {
        Filter delegate = wac.getBean(getTargetBeanName(), Filter.class);
        if (isTargetFilterLifecycle()) {
            delegate.init(getFilterConfig());
        }
        return delegate;
    }
   

    这个逻辑实际上就是根据servlet-name来从spring-bean中去查找对应的filter,这里是包含了字符串和安全过滤器。这个挺有意思,不过比较基础,没什么好讲的。

    然后看到了一个 

  ClientInfoThreadLocalFilter

   

try {
            final ClientInfo clientInfo;

            if (otherHeader == null || otherHeader.isEmpty()) {
                clientInfo = new ClientInfo((HttpServletRequest) request);
            } else {
                clientInfo = new ClientInfo((HttpServletRequest) request, this.otherHeader);
            }
            ClientInfoHolder.setClientInfo(clientInfo);
            filterChain.doFilter(request, response);
        } finally {
            ClientInfoHolder.clear();
        }

  这个东西主要封装了一下客户端和服务端IP信息,其中有个 alternateLocation 是可以配置在做nginx负载均衡的时候,丢失IP地址的问题,在转发的时候只要在nginx转发头中设置进去,然后在这里配置这个参数,即可获取客户端真正的IP地址。

  学习。

© 著作权归作者所有

下一篇: redis入门
卡尔码农
粉丝 91
博文 15
码字总数 19284
作品 0
常德
其他
私信 提问
JA-SIG(CAS)学习笔记3

技术背景知识: JA-SIG CAS服务环境搭建,请参考 :JA-SIG(CAS)学习笔记1 JA-SIG CAS业务架构介绍,请参考 :JA-SIG(CAS)学习笔记2 HTTPS所涉及的Java安全证书知识,请参考 :Java keyt...

张xtpgyaps
2011/06/30
743
0
cas单点登出 回调客户端,源码在哪里?没找到

cas-server-3.5.2.1 cas-client-3.3.3 单点登出 访问cas服务端logout登出,服务端回调所有客户端app销毁session的源代码在哪里?没找到啊 我有源码包,就是不知道是哪个类?...

jack_jones
2014/12/04
427
0
jasig CAS实现单点登录(数据库认证)

之前转载了一篇IBM的CAS单点登录实现,不过瘾,于是到官网弄下最新版本来再战一把: 这个CAS(Central Authentication Service)是耶鲁大学的开源项目,旨在实现企业应用单点登录,还是很不错的...

ihaolin
2014/02/18
14.7K
10
cas单点登录登出配置,学习记录

一、服务端配置: 证书 进入cmd,不需更改cd 第一种方法: 1、用JDK自带的keytool生成证书 keytool -genkey -alias sso -keyalg RSA -keystore e:/keys/ssokey 其中名字与姓氏写服务端域名,...

leilovege
2014/01/03
6.9K
1
Liferay6.1学习笔记(四)--整合CAS实现单点登录

转载:http://www.ibm.com/developerworks/cn/opensource/os-cn-liferay-cas/index.html Liferay 门户介绍 Liferay 是一个基于 J2EE 架构的完整的门户解决方案,使用了 EJB、JMS 等技术, 前...

Michaelyn
2014/01/16
3.2K
0

没有更多内容

加载失败,请刷新页面

加载更多

02.日志系统:一条SQL更新语句是如何执行的?

我们还是从一个表的一条更新语句说起,我们创建下面一张表: create table T(ID int primary key, c int); 如果要将ID=2这一行c的值加1,SQL可以这么写: update T set c=c+1 where ID=2; 前...

scgaopan
今天
7
0
【五分钟系列】掌握vscode调试技巧

调试前端js 准备一个前端项目 index.html <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1......

aoping
今天
6
0
PhotoShop 高级应用:USM锐化/S锐化/防抖

、 高反差锐化+混合模式:叠加模式 【将更多的边缘细节添加到图像中】

东方墨天
今天
7
0
Python数据可视化之matplotlib

常用模块导入 import numpy as npimport matplotlibimport matplotlib.mlab as mlabimport matplotlib.pyplot as pltimport matplotlib.font_manager as fmfrom mpl_toolkits.mplot3d i......

松鼠大帝
昨天
5
0
我用Bash编写了一个扫雷游戏

我在编程教学方面不是专家,但当我想更好掌握某一样东西时,会试着找出让自己乐在其中的方法。比方说,当我想在 shell 编程方面更进一步时,我决定用 Bash 编写一个扫雷游戏来加以练习。 我在...

老孟的Linux私房菜
昨天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部