2017-05-08 3 views
0

私は3つのアプリケーションでCASを使用しています。そのうちの1つからログアウトしようとすると、CASはそのアプリケーションからセッションを終了しますが、セッションは残ります他のアプリケーションでは、どのように私はすべてのセッションを殺すのですか?3つのクライアントアプリケーションでCASでSingle LogOut(SLO)を実行できません。 (Spring Security 4.2.1.RELEASE + SSO CAS-jasig 4.0.3)

  • CAS
  • APPLICATION
  • アプリケーションB
  • アプリケーションC、アプリケーションAから

ログアウトは、私はできなかったアプリケーションBおよびC

ログインremaisすべてのクッキーを取得するには、ログアウトメソッドがあるアプリケーションからのみ行います。

誰でもこれを手伝うことができますか?

答えて

0

ここで重要なのは、ローカルアプリケーションセッションをログアウトしてから、casログアウトサービスを呼び出すことです。私は、これはあなたがシングルログアウトの世話をする、バネのsecurity.xmlに/ログアウト/ CAS次のエントリにリダイレクトする場合、アプリケーションのログアウト・コントローラは

public ModelAndView logout(HttpServletRequest request) { 
    SecurityContextHolder.clearContext(); 
    request.getSession(false).invalidate(); 
    return new ModelAndView("redirect:/logout/cas"); 
} 

のようになります方法です想像します。

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

次のリンクが役立ちます。CAS Single LogoutこのリンクはCASバージョン4.2.x用です。

関連する問題