2011-07-26 6 views
1

私の会社には、内部のREST Webサービスである特定の認証プロバイダがあります。 実際には、Webサービスへのログイン/パスワードを提供し、トークン(数時間の妥当性を持つ)を返します。トークンは、Webサービスへの次回のビジネスリクエストごとにヘッダーに指定する必要があります。春のセキュリティログインと残りのWebサービス

Webアプリケーションを作成する必要があり、この認証プロバイダにプラグインする必要があります。 Spring Securityとの統合にはどのような方法が最適ですか?

私のWebアプリケーションでトークンの有効期限を管理するには、ユーザーに再ログインする必要はありませんか?

答えて

2

認証がWebサービスに委任されている春のセキュリティを使用する場合は、Springセキュリティフレームワークが提供するAuthenticationProviderインターフェイスを実装する必要があります。あなたは、私は元の質問に非常に似た状況に遭遇したhttp://static.springsource.org/spring-security/site/petclinic-tutorial.html

+0

ユーザー名やパスワードはありません。セッションは、ある種のSSOで事前認証されています。迅速なログアウトが必要な場合は、各リクエストをトークンストアに対して検証する必要があります。 – Szocske

1

春のセキュリティを使用するには、この

public class AuthProviderImpl implements AuthenticationProvider 
{ 
     @Override 
    public Authentication authenticate(Authentication authentication) 
    throws AuthenticationException 
     { 
      WebServiceAuthClient client = //get an handle to your web service 
      //get user name, password from authenticate object 
      client.autheticat(username, pwd); 
     } 

} 

設定のようなあなたのウェブアプリをいくつかのことを行うことができ、これは私がすることによって動作するつもり何です: http://static.springsource.org/spring-security/site/docs/3.0.x/reference/preauth.html

EDIT:

私たちのような状況では、セッションとそれに関連付けられたクッキーはすべて外部で管理されており、我々は唯一基づいて、それぞれの要求を検証し、承認する必要があります外部セッションストアで

代わりにカスタムSecurityContextRepositoryを使用します。

EDIT2:

は、共通のトークンストアに対する各要求をチェックしSecurityContextRepositoryを書くのは春のセキュリティにそれを配線、非常識な些細あった:セキュリティのcontext.xmlでのhttp要素がsecurityContextPersistenceFilterのカスタマイズを許可しません、私はプレーンな豆でそれをエミュレートしなければなりませんでした。全く楽しいことではありません。

関連する問題