【问题标题】:Unable to do Single LogOut (SLO) in CAS with 3 client applications. (Spring Security 4.2.1.RELEASE + SSO CAS - jasig 4.0.3)无法在 CAS 中使用 3 个客户端应用程序执行单次注销 (SLO)。 (Spring Security 4.2.1.RELEASE + SSO CAS - jasig 4.0.3)
【发布时间】:2017-10-06 23:11:52
【问题描述】:

我将 CAS 与三个应用程序一起使用,当我尝试从其中一个应用程序中注销时,CAS 会终止该应用程序的会话,但该会话仍保留在其他应用程序中。如何终止所有会话?

  • CAS
  • 应用A
  • 应用 B
  • 应用C

从应用程序 A 注销,重新登录应用程序 B 和 C。

我无法获取所有 cookie,只能从注销方法所在的应用程序中获取。

有人可以帮忙吗?

【问题讨论】:

    标签: session cookies spring-security cas jasig


    【解决方案1】:

    这里的基本方法是注销本地应用程序会话,然后调用 cas 注销服务。我想这就是您的应用程序注销控制器的样子

    public ModelAndView logout(HttpServletRequest request) {
        SecurityContextHolder.clearContext();
        request.getSession(false).invalidate();
        return new ModelAndView("redirect:/logout/cas");
    }
    

    当您重定向到 /logout/cas 时,spring-security.xml 中的以下条目将处理单次注销。

    <!-- This filter handles a Single Logout Request from the CAS Server -->
    <bean id="singleLogoutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter">
        <property name="artifactParameterName" value="SAMLart"></property>
    </bean>
    
    <!-- This filter redirects to the CAS Server to signal Single Logout should be performed -->
    <bean id="requestSingleLogoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
        <constructor-arg value="https://${cas.server.name}/cas/logout" />
        <constructor-arg>
            <bean class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler" />
        </constructor-arg>
        <property name="filterProcessesUrl" value="/logout/cas" />
    </bean>
    

    以下链接应该会有所帮助,CAS Single Logout。请注意,此链接适用于 CAS 版本 4.2.x。

    【讨论】:

    • 谢谢你当时帮了我很多。
    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 2015-05-07
    • 1970-01-01
    • 2015-12-08
    • 2011-09-01
    • 2015-12-28
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多