CAS - BACK_CHANNEL消息不起作用

时间:2016-09-26 20:17:34

标签: java spring-security cas

我正在使用CAS 4.2.3。我有2个cassified spring安全应用程序。当我从1个应用程序进行单点注销时,它不会注销其他应用程序。根据文档,BACK_CHANNEL应该向所有已注册的应用程序发送消息。

但是,就我而言,我在其他应用程序中没有看到来自CAS的任何消息。

我也没有在CAS日志中看到任何错误消息。

有人可以提供说明如何更好地调试此问题以解决此问题。

我在 cas.properties

中启用了以下功能
##
# Single Logout Out Callbacks
#
# To turn off all back channel SLO requests set this to true
slo.callbacks.disabled=false
#
# To send callbacks to endpoints synchronously, set this to false
slo.callbacks.asynchronous=true

在我的cas客户端 spring.xml

中添加以下内容
<sec:http use-expressions="true" entry-point-ref="casEntryPoint">
    <sec:intercept-url pattern="/login/*" access="permitAll()" />
    <sec:intercept-url pattern="/lib/**" access="permitAll()" />
    <sec:intercept-url pattern="/**" access="hasRole('ROLE_ADMINISTRATOR')" />
    <sec:custom-filter ref="requestSingleLogoutFilter" before="LOGOUT_FILTER" />
    <sec:custom-filter ref="singleLogoutFilter" before="CAS_FILTER" />
    <sec:custom-filter position="CAS_FILTER" ref="casFilter" />
    <sec:logout logout-success-url="/logout.jsp?service=https://<hostname>/WebApp4/j_spring_cas_security_check" />
</sec:http>

<!-- 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://<hostname>/cas/logout" />
    <constructor-arg>
        <bean class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler" />
    </constructor-arg>
    <property name="filterProcessesUrl" value="/logout/cas" />
</bean>

并在 web.xml

中添加了以下内容
<listener>
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

1 个答案:

答案 0 :(得分:0)

您需要确保在配置中启用了SLO,并且您的应用程序必须准备好捕获该POST并将用户注销。