2011-10-17 23 views
0

私たちは独自の中央セッション管理を持っています。一般的に、ユーザーはユーザー名とパスワードで認証し、結果としてsession_idを取得できます。他のすべての操作はそのsession_idで行われます。セッション管理がXML RPCによってアクセスされるとします。Springセキュリティを使用した外部認証

私は実装するために2例があります:フォームにだけ 渡されたのsession_idに依存している春に行わ

  • 外部のWebアプリケーションにログインしている春に行わ

    • 中央Webアプリケーションを。システムに関する

    さらにいくつかの注意事項:
    - のsession_idが
    (ログイン成功後、私が応答にクッキーを追加する必要があります)クッキーに保存されている - すべてのページ要求は、セッション管理システムでsession_idの有効性を確認する必要があります

    私はSpringには新しかったので、カスタムロジックを実装する場所と方法を理解するのに苦労しています。

    私の質問は以下のとおりです。

    1. 私は(あまりにもレスポンスオブジェクトへのアクセス権を持つようになった - クッキーを設定するために)自分のログイン ロジックを持つように実装する必要がどのようなシステムの部分? 私はUsernamePasswordAuthenticationFilterを拡張して独自の AuthenticationManagerを実装して何かを試しましたが、私は右に行くと確信していません 方法。

    2. Springセキュリティ方式で「すべてのリクエストセッション チェック」を実装する方法はありますか?

  • 答えて

    0
    • のsession_idがあなたの<form-login>要素に設定されているAuthenticationSuccessHandlerでこれを行います

    (ログイン成功後、私が応答にクッキーを追加する必要があります)クッキーに保存されています。

    • 外部Webアプリケーションも、Springで作成され、渡されたsession_idのみ。

    session_idのCookieを確認する新しいフィルタを作成します。クッキーが存在しないか、無効である場合、ユーザがログインするために中央Webアプリケーションにリダイレクトします。クッキーが存在し、有効で、まだ認証されていない場合は、新しいAuthenticationを作成してSecurityContextHolder

    フィルターで何をしたいかの例については、RememberMeAuthenticationFilter.doFilter()を見てください。

    <custom-filter>要素を使用してこのフィルタをフィルタチェーンに追加します。

    +0

    レスポンスにクッキーを追加する:「MySuccessAuthHandler extends SavedRequestAwareAuthenticationSuccessHandler」で試したところ、「MyAuthFilter extends UsernamePasswordAuthenticationFilter」で試しました。両方の場合(デバッガでテスト済み)、メソッドが呼び出されますが、レスポンスには追加したクッキーは含まれません。 – tole

    関連する問題