1

CAS 3.5 サーバーと 2 つの Java クライアント (app1 と app2 と呼びましょう) があり、シングル サインアウトが機能しません。app1 と app2 は JBoss AS7 の異なるインスタンスにデプロイされます。

テスト ケース シナリオは次のとおりです。

1 - ブラウザー タブで、app1 に正常にログインします。

2 - 別のタブで、app2 にアクセスすると、ユーザーはすでにログインしています (シングル サインオンが機能します)。

3 - app1 の正常なログアウト。

4 - ただし、ユーザーはページを更新した後も app2 にログインし続けます。JSESSIONID Cookie はまだ存在します。

app1 からログアウトすると (ステップ 3)、これが app2 のコンソールに出力されます (ログ レベル: デバッグ):

08:15:42,806 DEBUG [org.jasig.cas.client.authentication.Saml11AuthenticationFilter] (http--0.0.0.0-8080-3) no ticket and no assertion found
08:15:42,807 DEBUG [org.jasig.cas.client.authentication.Saml11AuthenticationFilter] (http--0.0.0.0-8080-3) Constructed service url: http://myip:8080/app2
08:15:42,807 DEBUG [org.jasig.cas.client.authentication.Saml11AuthenticationFilter] (http--0.0.0.0-8080-3) redirecting to "https://mycasip:8443/cas/login?TARGET=http%3A%2F%2Fmyip%3A8080%2Fapp2"

記録として、cas サーバーと app2 の両方の URL は正常に構成されているように見えますが、実際のリダイレクトは行われません。cas サーバーのコンソールに何も表示されません (再びログ レベル: デバッグ)。

これは私の web.xml からの抜粋です (SAML を使用して、ユーザー名のほかに LDAP 属性を送信します)。

<filter>
    <filter-name>CAS Single Sign Out Filter</filter-name>
    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    <init-param>
        <param-name>artifactParameterName</param-name>
        <param-value>SAMLart</param-value>
    </init-param>
</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>

SingleSignOutFilter の前にフィルター定義はなく、アプリの表示名とウェルカム ファイル リストのみがあります。

このような同様の質問を読みました(注:私はSpringもjspも使用せず、ユーザーは新しいタブでapp2を開いた後もログインしています)が、解決策がうまくいかなかったか、まったく与えられませんでした。

4

0 に答える 0