`
雨辰RainTime
  • 浏览: 112392 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CAS 3.4 单点退出详细配置(Configuring Single Sign Out )

    博客分类:
  • cas
阅读更多

CAS3.4版本已经很好的支持了单点注销功能,效果是非常的棒,配置是相当的简单。

之前版本因为在CAS服务器通过HttpClient发送消息时并未指定为POST方式,所以在CAS客户端的注销Filter中没有收到POST请求也就没有做session销毁处理。

 

 

现在的版本只要按照官网的说明正确配置即可。

假设环境如下:

 

两个业务系统APP1和APP2

在没有配置单点退出时,效果是这样子的

1:登录APP1,然后经过CAS认证后进入APP1

再访问APP2无需要认证

2:在APP1中连接到cas的logout地址,现象注销成功界面,然后再访问APP1,还是可以进去的,因为APP1将用户的登录票据存入了session。

 

那么实现了单点退出后的效果应该是这样子的:

1:登录APP1,然后经过CAS认证后进入APP1

再访问APP2无需要认证

2:用户在APP1或者APP2点击注销,显示CAS的注销成功页面,然后再访问APP1或者APP2都需要再次认证。

 

具体配置为:

在APP1和APP2的web.xml文件中增加:

<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>
	</filter>
<filter-mapping>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>

注销的Filter要在其它Filter之前

 

 

界面的注销连接到CAS的logout地址,如http://localhost:8080/cas/logout

 

完事

 

备注:如果直接访问CAS的logout话,会出现注销成功页面,其实大部分情况下这个页面是没有必要的,更多的需求可能是退出后显示登录页面,并且登录成功后还是会进入到之前的业务系统,那么可以修改cas-servlet.xml文件,在"logoutController"的bean配置中增加属性“followServiceRedirects”,设置为“true”,然后在业务系统的注销连接中加入"service参数",值为业务系统的绝对URL,这样就OK了,如你的业务系统URL为:http://localhost:8080/casClient,那么注销URL就为:http://localhost:8080/cas/logout?service=http://localhost:8080/casClient

6
2
分享到:
评论
16 楼 生活的长老 2016-01-15  
两个客户端  框架是 shiro+cas  但logout一个客户端时,第二个客户端会监听到退出操作,但是注销的是http session 而非shiro的session,如何解决啊,大神?
15 楼 stephansun 2015-10-12  
zqb666kkk 写道
如果 cas 服务是 cas.test.com:8443/casserver
client https://192.168.20.72:8443/chapter15-client/
client2 https://192.168.20.72:8443/chapter15-client2/

这种跨域的情况下 不行 我试过了 不知道怎么解决 楼主可否指导下


将client的ip改成域名试试看,server服务器改下/etc/hosts做映射
14 楼 zqb666kkk 2015-09-28  
如果 cas 服务是 cas.test.com:8443/casserver
client https://192.168.20.72:8443/chapter15-client/
client2 https://192.168.20.72:8443/chapter15-client2/

这种跨域的情况下 不行 我试过了 不知道怎么解决 楼主可否指导下
13 楼 zjloop_ 2015-09-22  
不错好文章,评论也值得一看。
12 楼 ewth126 2015-05-21  
王雨辰?  
11 楼 desksoft 2014-09-19  
http方式的单点退出,需要将ticketGrantingTicketCookieGenerator.xml文件中的p:cookieSecure="true" 改成 p:cookieSecure="false"。
https方式的单点退出,是不需要改动的。
10 楼 俺们穷人啊 2014-09-19  
9 楼 stephansun 2012-06-07  
张小宇 写道
注销是:https://localhost:8443/cas/logout啊

yes
8 楼 张小宇 2011-12-23  
注销是:https://localhost:8443/cas/logout啊
7 楼 andy_ghg 2011-03-19  
雨辰RainTime 写道
andy_ghg 写道
还有,怎么将设置cookie有效设定为无效?我没找到相关的配置文件。,


默认配置cookie有效期为-1
配置文件为:WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml


谢谢~!
6 楼 雨辰RainTime 2011-03-14  
andy_ghg 写道
还有,怎么将设置cookie有效设定为无效?我没找到相关的配置文件。,


默认配置cookie有效期为-1
配置文件为:WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
5 楼 andy_ghg 2011-03-08  
还有,怎么将设置cookie有效设定为无效?我没找到相关的配置文件。,
4 楼 andy_ghg 2011-03-08  
还有,怎么将设置cookie有效设定为无效?我没找到相关的配置文件。,
3 楼 andy_ghg 2011-03-08  
雨辰RainTime 写道
andy_ghg 写道
大哥,我还是不行啊,访问过http://localhost:8080/cas/logout之后不关浏览器,我还是能访问我的应用,这是咋回事?


原因有三点:
1:你的CAS服务器将cookie设置成了浏览器有效,那么表示如果浏览器不关闭,则一直有效。
2:你的应用中注销的filter-mapping是否放在了所有mapping之前
3:待研究



好了,现在我用HTTPS和最新的cas-client-3.2.0.jar就能实现了,3.1.9的还是不行。
2 楼 雨辰RainTime 2011-03-08  
andy_ghg 写道
大哥,我还是不行啊,访问过http://localhost:8080/cas/logout之后不关浏览器,我还是能访问我的应用,这是咋回事?


原因有三点:
1:你的CAS服务器将cookie设置成了浏览器有效,那么表示如果浏览器不关闭,则一直有效。
2:你的应用中注销的filter-mapping是否放在了所有mapping之前
3:待研究
1 楼 andy_ghg 2011-03-05  
大哥,我还是不行啊,访问过http://localhost:8080/cas/logout之后不关浏览器,我还是能访问我的应用,这是咋回事?

相关推荐

Global site tag (gtag.js) - Google Analytics