Spring JSP+;春天

Spring JSP+;春天,spring,jsp,single-sign-on,cas,Spring,Jsp,Single Sign On,Cas,我已经用Spring+JSPWebapp为单点登录设置了CAS,但现在我发现单点注销实际上并没有将我从应用程序中注销。我已经确认,如果我进入CAS注销页面,我确实会收到来自CAS的SAMLP注销请求。然而,当我返回到应用程序中的安全页面时,我没有重新登录CAS就进入了。如果我转到本地应用程序注销页面(/j_spring\u security\u logout),那么我将注销并立即重定向到CAS登录页面 简而言之,本地应用程序似乎没有注册来自CAS的注销请求并调用自己的注销过程 这是我的web.x

我已经用Spring+JSPWebapp为单点登录设置了CAS,但现在我发现单点注销实际上并没有将我从应用程序中注销。我已经确认,如果我进入CAS注销页面,我确实会收到来自CAS的SAMLP注销请求。然而,当我返回到应用程序中的安全页面时,我没有重新登录CAS就进入了。如果我转到本地应用程序注销页面(
/j_spring\u security\u logout
),那么我将注销并立即重定向到CAS登录页面

简而言之,本地应用程序似乎没有注册来自CAS的注销请求并调用自己的注销过程

这是我的web.xml的CAS部分

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<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>
<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

<filter>
    <filter-name>CAS Authentication Filter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>targetBeanName</param-name>
        <param-value>authenticationFilter</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CAS Authentication Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>CAS Ticket Validation Filter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
        <param-name>targetBeanName</param-name>
        <param-value>ticketValidationFilter</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CAS Ticket Validation Filter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
    <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>

<filter>
    <filter-name>CAS Assertion Thread Local Filter</filter-name>
    <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>

springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
CAS单签出筛选器
org.jasig.cas.client.session.SingleSignOutFilter
CAS单签出筛选器
/*
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
CAS认证过滤器
org.springframework.web.filter.DelegatingFilterProxy
塔吉特比纳姆
身份验证过滤器
CAS认证过滤器
/*
CAS票证验证筛选器
org.springframework.web.filter.DelegatingFilterProxy
塔吉特比纳姆
ticketValidationFilter
CAS票证验证筛选器
/*
CAS HttpServletRequest包装筛选器
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS断言线程本地筛选器
org.jasig.cas.client.util.AssertionReadLocalFilter

我是否需要创建一个特定的CAS bean来处理applicationContext.xml文件中的注销?或者完全通过web.xml文件配置?

调试SingleSignOutFilter时是否会使用户会话无效?可能CAS令牌保存在其中,或者保存在SecurityContextHolder中,因此它不会要求新登录。我有一个类似的问题,很抱歉不能完全理解SS+CAS。

当您调试SingleSignOutFilter时,它是否会使用户会话无效?可能CAS令牌保存在其中,或者保存在SecurityContextHolder中,因此它不会要求新登录。我有一个类似的问题,很抱歉不能完全理解SS+CAS