背景
cas的服务端已经搭建成功,现在需要在web项目中集成cas client。我们项目使用spring
1、在pom中配置

<!--cas单点登录  --><dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>${cas.version}</version></dependency>

2、web.xml配置cas地址

 <!-- request工具类--><listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener><!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><!-- 该过滤器用于实现单点登出功能,可选配置。 --><!-- <filter><filter-name>CAS Single Sign Out Filter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://221.11.98.32:8088/cas/logout</param-value></init-param></filter><filter-mapping><filter-name>CAS Single Sign Out Filter</filter-name><url-pattern>/nwfs/platform/security/logout</url-pattern></filter-mapping> --><!-- 该过滤器用于实现单点登录功能 --><filter><filter-name>CAS Filter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>http://221.11.98.32:8088/cas/login</param-value><!-- 使用的CAS-Server的登录地址,一定是到登录的action --></init-param><init-param><param-name>serverName</param-name><param-value>http://192.168.43.6:8080/nwfs</param-value><!--  当前Client系统的地址 --></init-param></filter><filter-mapping><filter-name>CAS Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <!-- 该过滤器负责对Ticket的校验工作 --><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class><init-param><param-name>targetBeanName</param-name><param-value>loginSinglePointScoreBp</param-value></init-param><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://221.11.98.32:8088/cas</param-value><!-- 使用的CAS-Server的地址,一定是在浏览器输入该地址能正常打开CAS-Server的根地址 --></init-param><init-param><param-name>serverName</param-name><param-value>http://192.168.43.6:8080/nwfs</param-value><!-- 当前Client系统的地址 --></init-param></filter><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 --><filter><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class></filter><filter-mapping><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <!--该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。比如AssertionHolder.getAssertion().getPrincipal().getName()或者request.getUserPrincipal().getName()--><!-- <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 Assertion Thread Local Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> --><!-- ========================单点登录结束 ======================== -->

注意:上面的地址其实只有两个,
1、web项目地址:http://192.168.43.6:8080/nwfs 地址+项目名称
2、cas单点登录的地址:http://221.11.98.32:8088/cas
如果服务端没有变化,一般登录为/login,登出为/logout
3、拦截处理
我在spring的登录拦截器中处理了单点登录的拦截

/*** 判断是否从cas登录,如果从cas服务端传过来登录名并且session中没有值,表示没有进行cas登录*/String csaLoginUser = request.getRemoteUser();  if (StringUtils.isNotBlank(csaLoginUser)&&StringUtils.isBlank(mcSession.getUserID())) {//cas临时处理loginSinglePointScoreBp.caslogin(request,csaLoginUser);this.sendRedirectHomeFrame(request, response);return false;}

上述就是我集成cas的过程,登出现在还没有集成,后期集成好后继续更新。
cas单点登录的过程:
https://blog.csdn.net/qq_34246546/article/details/79493208
cas单点登录:
1、登录访问进入cas的org.jasig.cas.client.authentication.AuthenticationFilter的过滤器,拦截到配置的cas服务上,重定向到cas服务端时会传参数service,该参数目的是登录成功之后会要重定向回来,因此需要该参数。
2、cas登录成功后,服务端后请求web项目的地址,并且有一个ticket的参数(不管你的web.xml中怎样配置,它只访问你的ip+端口号+项目名称这个地址)
3、web项目接受到这个请求后,通过org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter过滤器,发送到cas的服务端即http://221.11.98.32:8088/cas,验证这个ticket是否有效,如果有效访问http://192.168.43.6:8080/nwfs这个地址。

web工程中集成cas单点登录相关推荐

  1. oauth最后的确认按钮_spring-oauth集成cas单点登录,登陆完成进入授权页面后,按回退按钮进入404页面的问题...

    背景: 1.项目中使用耶鲁的cas做单点登录. 2.使用spring-oauth包实现oauth2服务 3.使用spring-cas做spring-security及cas的集成 现象: 开发报了个b ...

  2. springboot集成CAS单点登录客户端

    1. springboot项目pom.xml中 添加cas客户端依赖包 <dependency><groupId>org.jasig.cas.client</groupI ...

  3. 集成CAS单点登录 决策系统的配置以及注意事项

    这里重点说CAS客户端的相关配置与写法. 先上原理图: 从上面可以看出,分为如下几个步骤: 1 当我们访问被保护的资源时,会被CAS客户端拦截到,并重定向到CAS服务端去登录,此时URL上通过serv ...

  4. CAS学习笔记五:SpringBoot自动/手动配置方式集成CAS单点登出

    本文目标 基于SpringBoot + Maven 分别使用自动配置与手动配置过滤器方式实现CAS客户端登出及单点登出. 本文基于<CAS学习笔记三:SpringBoot自动/手动配置方式集成C ...

  5. CAS单点登录-配置中心(三)

    CAS单点登录-配置中心(三) 本章计划及内容 计划: 微服务概念 配置中心充当角色 搭建配置中心 cas连接配置中心 内容: 采用 spring cloud Dalston SR3搭建配置中心 采用 ...

  6. 爆破专栏丨Spring Security系列教程之实现CAS单点登录上篇-概述

    作者:千锋一一哥 前言 从本章节开始,一一哥 会给各位讲解一个很常见也很重要的知识点,就是单点登录!现在的大型分布式项目,基本都会考虑实现单点登录,而且现在网上也有很多单点登录的实现方案.开源项目,但 ...

  7. SSO之CAS单点登录详细搭建

    2019独角兽企业重金招聘Python工程师标准>>> SSO之CAS单点登录详细搭建 : 环境说明: 同一个机器上环境如下: 操作系统:windows7 64位 JDK版本:1.7 ...

  8. CAS单点登录原理简单介绍

    1. SSO简介 1.1 单点登录定义 单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统. ...

  9. 利用memcached实现CAS单点登录集群部署

    前言:利用memcached实现CAS单点登录集群部署 负载均衡: 将接口请求的有状态性变成无状态性.是我们在实现负载均衡时必要要解决的问题.以应用接口的session状态为例,一般解决方法都是将se ...

最新文章

  1. 计算机书籍-数据挖掘与预测分析
  2. 01 ORA系列:ORA-00904 标识符无效 invalid identifier
  3. 《象与骑象人》总结一
  4. 实验2(第二章课后习题)
  5. WIN2003下×××服务器架设攻略
  6. 2012总结--第1篇--技术篇
  7. 【数据结构与算法】之深入解析“按要求补齐数组”的求解思路与算法示例
  8. 使用绝对定位时浏览器大小改变排版会乱_HTML amp; CSS页面布局之定位
  9. 原子性 atomic 类用法
  10. linux 源码安装mysql5.7_linux安装mysql5.7.27
  11. phpcmsV9 首页调用全站最新文章(受模型限制)
  12. wps计算机打印双面输出,在wps中双面打印的方法步骤详解
  13. 《非暴力沟通》-马歇尔·卢森堡
  14. JVM-GC日志分析
  15. 2017年12月19-20日 阿里云 飞天/智能 云栖大会-北京峰会 会议笔记
  16. 关于井冈山大学校园宽带WIFI多人共享解决的一些思路
  17. 差异表达基因热图怎么看_基因表达谱热图绘制
  18. 计算机网络(谢希仁-第八版)第一章习题全解
  19. shell脚本增加回车符
  20. code:block17.12汉化

热门文章

  1. 开放平台战略下的趣店用户“跨界”
  2. python处理列表中字典_Python列表嵌套字典的时候,如果要删除列表中其中一个字典要如何操作...
  3. python弹球小游戏程序_Python基于Tkinter模块实现的弹球小游戏
  4. mysql explain字段含义,MySQL(十七):EXPLAIN 输出信息之 Extra 字段解释
  5. 上海交大计算机学院张卫东,张卫东
  6. java解非线性方程组_Scipy - 非线性方程组的所有解
  7. Python中find函数的作用及用法
  8. 【Python教程】typing模块的作用-提高代码健壮性
  9. Python列表操作:统计列表中的重复项出现的次数的方法,不懂也要知道的python知识
  10. python传参是传值还是传引用