2017-09-19 3 views
0

私はいくつかのアプリケーションをTomcat 7に配備し、Keycloakを使ってこれらのアプリケーションのユーザーログインとログアウトを管理しています。ログアウトは機能しません。つまり、ユーザーをログアウトせずにKeycloakのログインページにリダイレクトします。その後、JSESSIONIDクッキーがまだ存在することがわかりました.JSESSIONIDクッキーを削除すると、ログアウトリンクは期待通りに機能します。そこでTomcatのセッションを無効にしようとしました。Tomcatセッションを無効にする

<%@ page session="false" %> 

私のアプリケーションのJSPページのヘッダーにあります。残念ながら、これはまだTomcatのセッションを無効にしていないようですが、私はまだJSESSIONID cookieが表示されています。私は誰もがこの問題の解決策を持っているのだろうかと思っていますか?私は、Tomcatセッションの存在がKeycloakのSSOセッションに干渉し、Keycloakログアウトが機能しないと考えています。これはKeycloakユーザーが遭遇する共通の問題でなければなりません。TomcatはWebアプリケーションに広く使われています。

これをどのように処理するべきかについてのヒントをお寄せいただきありがとうございます。

答えて

0

私はKeycloakで特定の経験を持っていない、しかし、ほとんどに適用されない場合は、すべてのシングルサインオン(または外部認証)の原則があります解決策は:

SSOは、ユーザを識別し、負担を取り除きます典型的なアプリケーションからパスワードを知ることができます。ユーザーがサインインすると、アプリケーションサーバーは実際のSSOシステムから切り離されることが多いため、識別されたユーザーを古典的なログインで特定したようにキャッシュする必要があります。

ログアウト側では、アプリケーション自体(この場合はtomcat)からログアウトするか、SSOシステムからログアウトすることができます(これはここで行っているようです)。後者のアプローチでは、「シングルサインアウト」の問題に取り組んでいます。SSOシステムからログアウトすると、一度関連付けられたログインで開始されたすべてのセッションが無効になります。私が知っているように、SSOシステムは、それを介してサインオンしたすべてのシステムを追跡し、そこで明示的にログアウトする必要があります。

私はKeycloakでこれを実装する方法を教えてくれますが、一般的な原則は、解決に向けてあなたを導くことができますことを願ってすることはできません。

Tomcatの側でのセッションの使用または不使用には何の関係もありません問題は次のとおりです。サインインしたユーザーに加えてセッションに情報を正当に格納するアプリケーションがあるかもしれません - Tomcat自体のパスワードを比較していなくても、それらのアプリケーションは引き続き動作するはずです。あなたのコメントの後

編集、:

この1ページがセッションの使用をトリガしない場合は、他のコード(ログインを処理などのコードは)まだ、後、セッションをトリガし、可能性がありますセッションを使用したくないページに委任します。

Tomcatの設定でセッションを無効にする必要があると思います。カスタム"Manager" implementationを提供します。デフォルトのセッションでは、セッションを完全に無視するとは思われません。上で概説したように、Tomcat自体からログインしていなくてもセッションが必要になると期待しています。

セッションを回避する別の方法(これは、「セッションなし」設定が機能するとは思わない理由です)は、セッションの自動作成をトリガーするリクエスト/レスポンスのどのメソッドも呼び出さないようにすることです。あなたのアプリのどこかにそのような方法があるようです。

(私が間違っていると誰かが私を修正します。これは、私がこの要件を見たことがないので、ほとんど私の教育的な期待です)

+0

これは本当に私の質問に答えることはありません。質問はKeycloakとは関係がなく、Tomcatともっと関係があります。つまり、Tomcatのセッションを無効にする方法を知りたいだけです。私は片方の方法(<%@ page session = "false"%>)を試みましたが、うまくいかなかった。 – Alex

関連する問題