spring+shiro+cas实现单点登录,登出
cas.war下载地址:https://download.csdn.net/download/qq_37160920/10662543
1.下载cas.war,放在tomcat的 webapps下发布.需要根据本地的配置进行一些设置,可以参考:https://blog.csdn.net/zzq900503/article/details/54693267
2.配置好之后,访问:127.0.0.1:8090/cas/login,出现下图说明发布成功.(默认用户名,密码是:casuser /Mellon)
3.配置客户端单点登录:
在客户端系统的web.xml进行配置:
<!--pdf 单点登录配置 start--><filter><filter-name>CASFilter</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:8090/cas/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-mapping><filter-name>CASFilter</filter-name><url-pattern>/login.html</url-pattern></filter-mapping><!--该过滤器负责对Ticket的校验工作做,必须启动它 --><filter><filter-name>CASValidationFilter</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:8090/cas</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-mapping><filter-name>CASValidationFilter</filter-name><url-pattern>/login.html</url-pattern></filter-mapping><!--pdf 单点登录配置 end--><!-- 该过滤器负责实现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><listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener>
配置完成,在访问客户端系统的时候就会被拦截,跳转到cas单点登录的页面,输入用户名和密码之后会跳转回客户端系统,会带着用户名,然后根据自己系统的处理逻辑进行处理.在客户端获取用户名即说明单点登录的流程已经走通.
例:访问:http://127.0.0.1:8080/amp/login.html 会跳转到:http://127.0.0.1:8090/cas/login?service=http%3A%2F%2F127.0.0.1%3A8080%2Famp%2Flogin.html. 在cas服务端登录成功之后,会在访问http://127.0.0.1:8080/amp/login.html .
获取用户名的两种方法:(还有其他的获取方式,有兴趣的可以搜索学习一下)
1. Assertion assertion = (Assertion) request.getSession().getAttribute(AbstractCasFilter.CONST_CAS_ASSERTION);String userNameStr = null; if (null != assertion) {AttributePrincipal principal = assertion.getPrincipal();userNameStr = principal.getName();}//使用这种方式需要在web.xml中配置HttpServletRequestWrapperFilter过滤器
2. String username = request.getRemoteUser();
4.单点登出的配置:
官网给出的配置:
<!--pdf 单点登出配置 start--><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><!--该过滤器用于实现单点登出功能--><filter><filter-name>CASSingLe Sign OutFilter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class><!--<filter-class>com.liindata.amp.shiro.cas.CasLogoutFilter</filter-class>--><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://127.0.0.1:8090/cas</param-value></init-param></filter><filter-mapping><filter-name>CASSingLe Sign OutFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--pdf 单点登出配置 end-->
因为使用shiro对session进行了管理,所以网络上只配置SingleSignOutFilter拦截器不能实现登出功能.在网络上搜索找到了一种解决办法: https://blog.csdn.net/zhmz1326/article/details/52287649
对 Shiro的Web过滤器和上面说的有一些不同配置, 对/** ; /login.html ;/index.html都进行了配置.
/login.html=casLogout,anon/index.html=casLogout,login,remember/**=casLogout,login,remember,perm,baseUrl
配置完成重启登录之后,新打开一个窗口访问:http://127.0.0.1:8090/cas/logout
再访问客户端时,就会跳转到单点登录界面.说明登出成功.
spring+shiro+cas实现单点登录,登出相关推荐
- java php 单点登陆,cas实现单点登录,登出(java跟php客户端)(转)
cas实现单点登录,登出(java跟php客户端)(转)cas实现单点登录,登出(java和php客户端) (转) 最近项目中需要做单点登录,客户端包含java和php,java有几个应用程序,php ...
- cas 6 单点登录登出管理
cas自带的登出是通过登出地址后面接的service地址进行跳转,但是对于service没有进行验证,这边我们网络渗透测试后说可能被钓鱼需要进行验证所以开始了以下操作. 1找资料 首先到cas官网找, ...
- 绝对完全跨域统一单点登录登出
应用场景:多个系统下同属于一个用户,当用户登录了web1系统,那么访问web2,web3. . . . 时候,用户就无需再次登录.如:淘宝与天猫,登出也如此,一个系统登出,其他系统的登录也随之失效,这 ...
- CAS 单点登录/登出 系统
前言: 在我们的实际开发中,更多的是采用分布式系统.那么问题来了,对于分布式系统的登录问题,我们如何解决呢? 如果说我们在每一个系统中都要进行一次登录,那么用户体验度也就差的没法用了.以京东商城为例, ...
- springboot+shiro+cas实现单点登录之shiro端搭建
github:https://github.com/peterowang/shiro-cas 本文如有配置问题,请查看之前的springboot集成shiro的文章 1.配置ehcache缓存,在re ...
- Shiro CAS 实现单点登录
1.简介 CAS:Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法. Shiro:Apache Shiro是一个Java安全框架,可以帮助我们完成认证.授权.会话管 ...
- sso 登出_SSO单点登录/登出系统实现
先把源码贴出来,再慢慢讲解思路和原理以及实现方式 -->源代码1.0 整合了Mybatis +redis/redis集群二级缓存+cookie加密机制+token -->源代码2.1 密 ...
- spring + shiro + cas 实现sso单点登录
sso-shiro-cas spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次,项目源码 系统模块说明 cas: 单点登录模块,这里直接拿的是cas的项目改了点样 ...
- 从零开始java安全权限框架篇(一):spring security配置登录登出的配置
目录 一:安全权限框架的选取 二:功能 三:登录登出 四:代码注释 1.将登陆交由Spring security完成 2.前台明文密码加密,与数据库比对 3.关键配置 4.自定义用户异常 5.ajax ...
最新文章
- 在双系统电脑再安装一个ubuntu18.04
- python和java哪个-Java和Python现在都很热门,哪个更有前途?
- linux中录屏工具byzanz
- Java语法基础-1
- 机器学习进阶-优化的近邻算法
- 17_android下xmlpull解析
- pythontry参数_Python ——Try Except
- 快速简单高效的搭建 SolrCloud 集群
- 转行学编程,女孩子适合web前端还是Java?
- 《Google C++ 编码规范》小结
- java jython_将对象从Java传递到Jython时保留Java类型
- bs架构与cs架构的区别_性能测试流程5步走:BS架构和CS架构性能指标大对比
- cad卸载不干净_一款极其好用的卸载神器:Geek Uninstaller,再也不怕软件卸载不干净!...
- 索尼电视总出现Android,索尼BRAVIA电视推送更新:升级安卓8.0,修复众多问题
- 第188篇,想赚钱唯有只争朝夕(扶摇生财思维)
- Windows系统查看电脑系统信息(操作系统与版本、系统型号、处理器具体型号、BIOS版本、BIOS模式、主板信息等等)
- 转载【电波话题】10:电波群友关于广播电台短波带宽的讨论
- 学C++就学服务端,先把apue和unp两卷看了,接着libevent,出来找工作应该没问题
- 我他妈的是什么!!!!
- pb中操作excel表格函数
热门文章
- .aspx,.ascx和.ashx的关系
- leetcode---第 250 场周赛 5814. 新增的最少台阶数
- CUDA C++ | 向量加法并行计算
- 计算机中的中断处理流程
- 荐书:《分布式服务架构:原理、设计与实战》
- 断点运行的参数_断点回归设计(RDD)及其在STATA软件的实现过程
- 最优化学习 牛顿法(Newton’s method)
- 英语自我介绍技巧(收集)
- 工程流体力学笔记暂记6(质量连续方程(微分形式的))
- EL表达式 | 深入学习EL表达式