一、配置客户端Web.xml
<!-- 用于单点退出,该过滤器用于实现单点登出功能 --> <listener> <listener-class>org.jasig.cas.client.javafilter.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> </filter> <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
说明:此filter一定要放到别的filter之前。
如果想在执行CAS Single Sign Out Filter之前,想做点别的事情,我们可以自定义个servlet
<!-- 用户登出 --> <servlet> <servlet-name>LogOutServlet</servlet-name> <servlet-class>com.wy.cas.client.servlet.LogOutServlet</servlet-class> <init-param> <param-name>serverLogoutUrl</param-name> <param-value>https://sso.wy.com:8443/cas-server/logout</param-value> </init-param> <init-param> <param-name>serverName</param-name> <param-value>http://127.0.0.1:8081/cas-test</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>LogOutServlet</servlet-name> <url-pattern>/logout</url-pattern> </servlet-mapping>
说明:登出为什么要使用https协议?
我们可以在ticketGrantingTicketCookieGenerator.xml找到原因:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"> <description> Defines the cookie that stores the TicketGrantingTicket. You most likely should never modify these (especially the "secure" property). You can change the name if you want to make it harder for people to guess. </description> <bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator" p:cookieSecure="true" p:cookieMaxAge="-1" p:cookieName="CASTGC" p:cookiePath="/cas" /> </beans>
p:cookieSecure="true",作用就是要求客户端和Cas Server之间通过HTTPS或者其它安全协议传递数据。
cookie的Secure属性,只能保证cookie与Cas Server服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密。
如果我们不是HTTPS协议进行登出,就会发现登出是不会成功的。通过fireBug查看提交的内容时,发现注销时,并没有相关的cookie。
二、登出成功后,重定向到登录页面
在cas-servlet.xml中,logoutController的p:followServiceRedirects="${cas.logout.followServiceRedirects:false}"默认是false
我们只需要修改为true,然后在业务系统的注销连接中加入"service参数",值为业务系统的绝对URL,这样就OK了,如:https://sso.wy.com:8443/cas-server/login?service=http://127.0.0.1:8081/cas-test
<bean id="logoutController" class="org.jasig.cas.web.LogoutController" p:centralAuthenticationService-ref="centralAuthenticationService" p:logoutView="casLogoutView" p:warnCookieGenerator-ref="warnCookieGenerator" p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator" p:servicesManager-ref="servicesManager" p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>
三、自定义Servlet
public class LogOutServlet extends javax.servlet.http.HttpServlet{ private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public LogOutServlet() { super(); } public static String serverLogoutUrl = ""; public static String serverName = ""; public void init() throws ServletException { serverLogoutUrl = this.getInitParameter("serverLogoutUrl"); serverName = this.getInitParameter("serverName"); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { UserInfo user = new UserInfo(); response.sendRedirect(serverLogoutUrl + "?service=" + serverName + "&username=" + user.getIscUserSourceId()); } }
相关推荐
3、 单点登录和单点登出的实现和测试 4、 单点登录、登出的原理探究等 知识点 l 相关概念或术语:SSO、CAS、TGT、TGC、ST l CAS Server服务端的搭建和配置 l CAS Client客户端的搭建和配置 l 单点登录的测试 l 单点...
CAS单点登出问题及解决 二 (文章摘自笔者发在自己公司内部论坛的文章:谢绝转载)
用cas实现mantis单点登录和登出,详细讲了mantis的程序修改用cas实现SSO,已经在实际中应用,非常有帮助
cas单点才登出原理cas单点才登出原理
cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出cas客户端集成单点登录代码登录登出
cas单点登录登出配置 php 和java 版本。 完美实现了登录和登出, demo cas server 3.5.2 版本 -- 扔到tomcat下直接跑。 java客户端为 3.2.1. -- 要想跑的话需要自己下载jar php 扔到php工程里面直接跑。。 记得看...
NULL 博文链接:https://zxs19861202.iteye.com/blog/855856
13.单点登出代码实现.avi 14.单点注销的流程梳理.avi 15.CAS-配置https.avi 16.CAS-搭建服务端(静态认证).avi 17.CAS-搭建服务端(JDBC认证).avi 18.CAS-搭建客户端(一).avi 19.CAS-搭建客户端(二).avi 20.CAS-单点...
本人为初学者,此文档为实践过程的记录,超细致
CAS(中央身份验证服务)是Web的单点登录/单点退出协议。 我们假设您已经熟悉CAS协议,如果不熟悉,请在使用前阅读本。安装$ npm install http-cas-client特征唱歌登录(SSO) 带有axios api的CAS代理,用于POST,...
Authing SSO SDK 用于发起 SSO 登录、查询 SSO 登录状态、单点登出。 单点登录(SSO) 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。 SSO 的定义是在多个应用系统中,用户...
主要介绍了spring boot 1.5.4 集成shiro+cas,实现单点登录和权限控制,需要的朋友可以参考下
cas的jar包,可以直接在本地部署发布,进行cas单点登录,登出的测试,开发
1.如果客户端项目采用shiro控制权限 则需要将cas-client 认证过滤交给shiro来管理 2.从shiro下载相应版本的shiro-cas-xxxx. Jar或者在maven里直接添加
-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置 --> <listener-class> org.jasig.cas.client.session.SingleSignOutHttpSessionListener </listener-class> <!-- 该过滤器用于实现单点登出...
单点server demo 引入依赖 spring-boot-starter-thymeleaf 用于页面 <groupId>com.bird.cloud</groupId> <artifactId>spring-cloud-starter-bird-base <groupId>com.bird.cas</groupId>
cas协议3.0 中文版教程详解 ...Central Authentication Service(以下简称CAS)是一个网络的单点登陆(SSO)/单点登出(SLO)协议。它允许用户在访问多个应用程序时,仅需向中央CAS服务器提供一次凭据(如userid和password)