2016-09-26 8 views
0

私はCAS 4.2.3を使用しています。私は2つのカシメドスプリングセキュリティアプリケーションを持っています。私は1つのアプリケーションから単一のログアウトを行うと、他のアプリケーションをログアウトしません。ドキュメントによると、BACK_CHANNELは登録済みのすべてのアプリケーションにメッセージをPOSTする必要があります。CAS - BACK_CHANNELメッセージが機能しない

私のケースでは、他のアプリケーションでCASからのメッセージは表示されません。

CASログにもエラーメッセージは表示されません。

この問題を解決するために、この問題をよりよくデバッグする方法を説明できる人がいますか。

私はcas.properties私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> 

を追加

## 
# 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 

に次のように有効になっており、web.xmlに以下を追加しました,

<listener> 
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> 
</listener> 

答えて

0

構成でSLOが有効になっていることを確認する必要があります。アプリケーションでは、そのPOSTをキャプチャしてユーザーをログアウトする準備が必要です。

+0

SLOを有効にする方法を詳細に教えてください。 cas.propertiesでオンにする必要があるのでしょうか? SingleSingoutFilterとリスナをcasクライアントに追加しました。 POST要求をキャプチャして処理するために、私はcasクライアント側から何か他の処理を行う必要がありますか?まず、/ cas/logoutを実行したときにcasクライアント(他のcas登録サービス用)に投稿されたものは表示されません。 – SaAn

+0

SLOを有効にするために使用したコードで説明を更新しました。 – SaAn

+0

Spring Securityの仕組みがわかりません。トラブルシューティングを行うには、CASログをDEBUGに更新して何が起こるかを確認する必要があります。メッセージが出てきたら残りはSSです。 –

関連する問題