2016-09-26 54 views
0

我正在使用CAS 4.2.3。我有2個分層的彈簧安全應用程序。當我從1個應用程序進行單一註銷時,它不會註銷其他應用程序。根據文檔,BACK_CHANNEL應該向所有註冊的應用程序發佈消息。CAS - 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> 

回答

0

您需要確保您的配置中啓用了SLO,並且您的應用程序必須準備好捕獲該POST並將用戶登出。

+0

你能幫我詳細說明如何啓用SLO。是否需要在cas.properties中打開?我有SingleSingoutFilter和偵聽器添加到cas客戶端。我是否需要從cas客戶端執行其他任何操作,以準備捕獲POST請求並處理它。首先,我甚至沒有看到任何在cas客戶端(對於其他cas註冊服務)發佈任何內容結束時,我做了/ cas /註銷 – SaAn

+0

我用我用來啓用SLO的代碼更新了說明。 – SaAn

+0

我不知道Spring Security是如何工作的。要排除故障,您需要將CAS日誌更新爲DEBUG並查看會發生什麼情況。如果你看到消息出去,那麼剩下的就在SS上。 –