4

現在、モジュールが単一の.EARファイル(それぞれに.WAREJB .JARを含む)としてデプロイされる大きなアプリケーションを開発しています。

GlassFish 3.1では、JAASを使用してシングルサインオンになるようにアプリケーションを構成します。したがって、SSOセッションが有効である間、すべてのWebモジュールセッションを有効にしておく必要があります。

例としては、モジュールABありC、10分間のセッションでデプロイされます。ユーザーはを使用してサインオンしA、に移動しBC、に移動し、に20分を費やすことができます(想定します)C

アイデアは、ユーザーがのみを使用している間、およびCで彼のセッション(管理対象Beanを含む)を存続させる必要があるということです。AB

これを達成するために何が役立つでしょうか?各モジュールにサーブレットを作成してセッションにアクセスし(したがって、セッションを存続させて)、ユーザーが使用しているモジュールからそれらのサーブレットに非同期(一方向である可能性がありますか?)要求を送信するというアイデアがありますが、ユーザーが何かをするたびに(TCP経由で)HTTP接続を開きます。ここではポーリングが役立つかもしれませんが、この種の通信は避けたいと思います。

もう1つのアイデアは、共有メモリキャッシュとキャッシュリスナーを使用して他のセッションにアクセスし、セッションIDを使用してルックアップを実行することです。これはより良いパフォーマンスでトリックを行うことができますか?

別のアプリケーションサーバーを使用する場合を除いて、あらゆるアイデアを受け入れます(OpenSourceGlassFishを使用する必要があります。Coherence*Webは使用しないでください)。

お時間をいただきありがとうございます。

4

1 に答える 1

2

JAAS が必要ですか? spring-security と、セッション ID のバッキング redis キャッシュを使用してソリューションを実装できます。たとえば、ユーザーが on にログインするとA、セッション ID が redis キャッシュに入れられます。ユーザーBがセッション ID をクエリ パラメーターとして渡すリンクを介して移動すると、Spring セキュリティ レイヤー ( on B) は、 session-id は生きていて、redis キャッシュで有効です。Redis には期限切れデータのサポートが組み込まれています

中央認証サービス (CAS) の構築に関するhttp://www.infoq.com/minibooks/Identity-Management-Shoestringという良い記事があります。

お役に立てれば

于 2012-10-11T10:37:53.497 に答える