1

我已经为我的 Spring+JSP webapp 的单点登录设置了 CAS,但现在我发现单点注销实际上并没有让我退出应用程序。我已经确认,如果我转到 CAS 注销页面,我确实会收到来自 CAS 的 SAMLP 注销请求。但是,当我返回应用程序中的安全页面时,我无需重新登录 CAS 即可进入。如果我转到本地应用程序注销页面 ( /j_spring_security_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>

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

4

1 回答 1

1

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

于 2009-11-27T21:49:49.410 回答