2017-03-03 3 views
1

私はSpring Securityを使用してJavaで開発された2つのWebアプリケーションを用意しています。各アプリケーションは、それはそれ自身のコンテキストに配備されているので、自分のWARだとあります。私はmy-app2上にあるコントローラにmy-app1にAJAX呼び出しを作るしようとすると、今AJAXを別のアプリケーションコンテキスト(Java + Tomcat)で呼び出す

localhost:8080/my-app1 
localhost:8080/my-app2 

、私は私のセッションというエラーメッセージが表示されます期限切れです。どちらのユーザーがmy-app1で認証されたのですが、my-app2では認証されていません。

対応策はありますか?

答えて

0

は、私は2つのソリューションを持っている:

  1. 安全な1:あなたは両方のアプリケーションのためのデータベース「のidセッション」を保存して、コールにこのIDを渡すために試みることができます。 2番目のアプリケーションでは、そのIDを検証して呼び出しを続行できます。
  2. 安全でないもの: my-app2のこの呼び出し(urlマッピング)でユーザーセッションを検証しないようにSpringを設定できます。

は、あまりにもこれを見つけた:Any way to share session state between different applications in tomcat?

+1

私はIDを確認できるポイントに達する前に春のセキュリティがリクエストをブロックするので、ソリューション1は動作しないと思います。解決策2は実行可能ではありません。 –

0

私はあなたがブラウザ側でクッキーのエントリとしてログイントークンを格納することをお勧め、あなたのケースで(APP1とAPP2に同じドメインを持つべきクッキー、それは単にlocalhostです)。したがって、両方のアプリのバックエンドに渡されます。

ログイントークンには、サーバーによって暗号化される暗号化されたユーザー名と、検証に使用されるパスワードのハッシュを含めることができます。

これは、実際には、Spring SecurityのトークンベースのRemember Meサービスの背後にあるアイデアです。