0

次のプロジェクト構造があります。

ベース プロジェクト (サービス層、モデル) web プロジェクト webservice プロジェクト

ここで、Web プロジェクトと Web サービス プロジェクトの両方が基本プロジェクトに依存し、それによって提供されるサービスを使用します。

私は Spring Framework を多用しています。つまり、サービスは@Secured Annotation とSpring Securityによって保護されたメソッドを持つ Spring Beanです。クライアントのアクセス許可をチェックする AbstractAclVoter を拡張するVoterを作成しました。

Web プロジェクトは、Spring MVCと、@EndpointアノテーションおよびXwsSecurityInterceptorを備えた Web サービス プロジェクトSpring WSを使用します。

これが私の問題です:

呼び出しが Web プロジェクト コントローラーまたはベース プロジェクトの JUnit テストで行われた場合、パーミッションはチェックされますが、Web サービス プロジェクトからのリクエストは正しいパーミッションについてチェックされません - 私の投票者は呼び出されません!

  • これはXwsSecurityInterceptorと関係がありますか?
  • Web サービス プロジェクトにもDelegatingFilterProxyが必要ですか? (すべてが MessageDispatcherServlet 構成によって構成されているため、 ContextLoaderListener はありません)
4

2 に答える 2

1

付与された権限が設定されたユーザー認証オブジェクトは、Web サービス プロジェクトではなく、Web コンテキストでのみ使用できます。Web サービス アプリケーションを呼び出すとき、そこには同じセキュリティ コンテキストがありません。そのため、セキュリティ タグはあちらでは機能しません。

于 2009-10-14T20:53:58.380 に答える
0

Spring Security は、Web アプリケーションのサーブレット フィルターとして統合されます。したがって、Web サービス プロジェクトの web.xml に DelegatingFilterProxy を追加して、そのアプリケーションへの要求を処理できるようにする必要があると思います。

于 2009-10-13T19:12:08.363 に答える