bug之cas-server-webapp 4.0.4版本无法一键登出问题

今天一直在找原因,为什么登出后,客户端还可以继续访问。

http://localhost:8080/cas-server/logout
这个单点退出功能好像并没有注销客户端的session。

http://10.100.1.240:9090/cas-client-1/ 

客户端还是可以直接访问,不会跳转到cas-server的登录页面 

网上查了好多资料,并且也导入eclipse跟踪调试了,花费了大量的时间和精力最后发现4.0.4版本好像有bug,并没有实现一键登出功能。

访问/logout时,4.0.4版本会调用LogoutAction的doInternalExecute方法

protected Event doInternalExecute(final HttpServletRequest request, final HttpServletResponse response,
            final RequestContext context) throws Exception {

        boolean needFrontSlo = false;
        putLogoutIndex(context, 0);
        final List<LogoutRequest> logoutRequests = WebUtils.getLogoutRequests(context);
        if (logoutRequests != null) {
            for (final LogoutRequest logoutRequest : logoutRequests) {
                // if some logout request must still be attempted
                if (logoutRequest.getStatus() == LogoutRequestStatus.NOT_ATTEMPTED) {
                    needFrontSlo = true;
                    break;
                }
            }
        }

        final String service = request.getParameter(CasProtocolConstants.PARAMETER_SERVICE);
        if (this.followServiceRedirects && service != null) {
            final Service webAppService = new WebApplicationServiceFactory().createService(service);
            final RegisteredService rService = this.servicesManager.findServiceBy(webAppService);

            if (rService != null && rService.getAccessStrategy().isServiceAccessAllowed()) {
                context.getFlowScope().put("logoutRedirectUrl", service);
            }
        }

        // there are some front services to logout, perform front SLO
        if (needFrontSlo) {
            return new Event(this, FRONT_EVENT);
        } else {
            // otherwise, finish the logout process
            return new Event(this, FINISH_EVENT);
        }
    }


发现WebUtils.getLogoutRequests(context)一直是返回null值,needFrontSlo值总是false。

根本不会进入网上找资料说的logout注销时会调用org.jasig.cas.CentralAuthenticationServiceImpl类的destroyTicketGrantingTicket注销方法。


最后实在没办法了,就下载了个和网上例子一样的版本的cas-server,即cas-server-3.5.2-release.zip。部署后测试成功。

下面是网上找的相关资料。我主要参考的是第一个博客写的。

http://blog.csdn.net/lifetragedy/article/details/43817903
单点登录之CAS SSO从入门到精通(第一天)

https://www.cnblogs.com/chenrd/p/5164706.html
cas+shiro统一注销原理解析

http://blog.csdn.net/timesongjie/article/details/51945718
单点登出

http://blog.csdn.net/i__rookie/article/details/77893776
单点登出


http://blog.csdn.net/zhurhyme/article/details/38341113
cas入门之二十二:自动单点登出之后的问题


http://blog.csdn.net/bitree1/article/details/55212283
单点登录CAS系列8-客户端配置单点登出


http://jcbay.iteye.com/blog/860018
CAS 3.4 单点退出详细配置(Configuring Single Sign Out )




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值