2016-03-26 20 views
0

私は春のセキュリティで保護されたアプリケーションに手動でログインする必要があります。 私のシナリオでは、私の春のアプリケーションへのリンクが利用可能になるアプリケーション1. 春のセキュリティ事前認証されたユーザーのログイン

    1. ユーザーがログインです。
    2. ユーザーがリンクをクリックすると、アプリケーション1は春のアプリケーションのセキュリティで保護されていないURLに暗号化されたデータを投稿します。
    3. 私のコントローラは、暗号化されたデータを受信し、アプリケーション1のWebサービス を呼び出します。暗号化されたデータがWebサービスで渡され、ユーザー名の応答が返されます。
    4. 一度私はユーザー名を取得します。私は再認証したくありません。私はちょうどユーザープリンシパル/認証オブジェクトを設定し、ダッシュボードをロードしたい。

    手順1〜4が動作しています。

    暗号化されたデータを取得した私のセキュリティで保護されていないコントローラ 私は次の行を持っていますが、これも私の認証マネージャーを呼び出すため、このシナリオではもう一度認証しません。セッションを作成し、ユーザープリンシパルを設定したいだけです。

    String username = application1.webservice(encoded data); 
        Authentication authentication = new UsernamePasswordAuthenticationToken(username,password); 
        SecurityContextHolder.getContext().setAuthentication(authentication); 
        return "redirect:/app"; 
    

    注:私は、フォームベースのLDAP認証が働いて、私は春のセキュリティ3.2/Javaのコンフィグを使用しています を(ユーザが直接私のアプリにログインしている場合、これが使用されます)持っているSecurityContextPersistenceFilterが担当する

  • 答えて

    0

    ウェブリクエストの開始時ににSecurityContextを設定します。また、リクエスト処理中のSecurityContextの変更は、ウェブリクエストが終了するとHttpSessionにコピーされます。

    SecurityContextAuthenticationを更新する場合、このフィルタは認証要求の最後にHttpSessionを更新します。

    JSESSIONIDが返信されることを確認できますか?それ以降のすべての要求で同じ応答が返されますか?

    +0

    こんにちは、ありがとうございました。私は提供されたカスタム認証を追加して解決しました。 – Mukun

    関連する問題