5

JSP& Servlets(コンテナ: Tomcat7、データベース: Oracle10)を使用して Web アプリケーションを開発しています。

Profile、、、のようないくつかの Web アプリケーションを開発しましReportsLeads。次に、ALoginアプリケーションを開発しました。このアプリケーションでは、いくつかのセッション属性とともにUSERIDを保存しています。Session

ユーザーがログインすると、アプリケーションへのリンクなど、他のアプリケーションへのリンクを含むメニューが表示されますProfile

したがって、Sessionユーザーのログイン後にアクセスすると:

  • 同じアプリケーション (ログイン) でセッションにアクセスしようとすると、必要なすべての属性を持つセッションが取得されます
  • しかし、他のアプリケーションからセッションにアクセスしようとすると、次のよう Profilesにセッションが取得されますnull

セッションをチェックするためのコード スニペット(ログイン Web アプリケーションのサーブレット フィルター)

HttpSession session = request.getSession(false);
if(session==null)
{
    System.out.println("Session does not exist... Redirected to LOGIN Page.");
    response.sendRedirect("/ApplicationName/Login.jsp");
}

Profileユーザーがログインしているかどうかを確認するために、アプリケーションでセッションにアクセスしています。

そこで調べてみたところ、Sessionセキュリティ上の理由から他のアプリからはアクセスできないことがわかりましcrossContext="true"た。

その後、すべてのアプリケーションを作成して展開するなどの他のオプションを見つけましEARたが、残念ながらEARではサポートされていませんTomcat7

私は Web 環境が初めてなので、以前にこれに取り組んだことがある人がいる場合は、どのようなオプションがあるか教えてください。

前もって感謝します

アップデート1

ここEARで、すべてのファイルをパックしWAR、それらの間でセッションを共有しようとします。Tomcat はサポートしていないため、EARをインストールしました。Oracle Glassfish次に、 Enterprise Application Project2 つのアプリケーション1. Loginとを含むファイル2. Profilesを作成し、EARファイルを作成して にデプロイしましたGlassfish。したがって、これら 2 つのアプリケーション (Glassfish 上) 間でセッションを共有したいので、何かアイデアがあれば教えてください。(チュートリアルへのリンクも歓迎します)

4

2 に答える 2

5

上で指摘したように、あなたが話している要件はシングル サインオン (SSO) です。実装できる最も単純な SSO は次のとおりです。

  1. 認証が成功したら、暗号化されたユーザー名で Cookie を追加します (パスワードを暗号化する必要はありません)。
  2. ユーザー名 Cookie を使用していずれかのアプリケーションにアクセスし、復号化に成功した場合は、ユーザーが認証されたことを意味し、ログイン ページを表示する必要はありません。

暗号化には AES-256 を使用します。

于 2013-04-24T07:29:03.187 に答える
4

私のショップでこれが行われたのを見た方法は、ログイン資格情報を暗号化された Cookie に詰め込み、Cookie を復号化して渡すエージェント (ユーザー データを必要とするアプリケーションの前に Java フィルター、Web サーバー mod など) をインストールすることです。データに沿ってダウンストリーム アプリケーションに送信します。アプリケーション間で共有する場合は、ログイン情報を HTTP セッションに保存しないでください。

于 2013-04-17T12:53:11.303 に答える