3

Spring Security @PreAuthoriseを使用して、サービスレイヤーのメソッドにアクセスできないユーザーとユーザーを確認しています。それは本当にうまくいきます。通常、私のサービスメソッドには注釈が付けられています

@PreAuthorize("hasAnyRole('MY_USER_ROLE')")

私の問題は、いくつかのjarファイルで構成されたwarファイルがあることです。これらの各jarファイルは、ビジネスロジックのセグメントを担当します。ここで、あるjarファイル内のサービスの1つが、別のjarファイル内の別のサービスにアクセスできるようにします。これは、権限のために拒否されます。許可をコメントアウトすると、すべてが機能します。

とにかく、このサービスを呼び出す前に、Springを介して認証できますか?(おそらくダミーユーザーの場合?)または、同じアプリケーション内のjarのセキュリティをオフにしますか?それとも私のデザインは間違っていますか?

他の誰かがこの種の問題を抱えていますか?代わりにどのデザインを使用すればよいですか?

4

2 に答える 2

2

(他のjar内の)サービスを呼び出すスレッドに、(呼び出されたサービスに対して)必要なアクセス許可を与える必要があります@PreAuthorize

スレッドがユーザー要求によってWebアプリケーションでトリガーされる場合、これは通常、ユーザーのアクセス許可です。

ただし、スレッドが何らかのタイマーサービスによってトリガーされる場合は、適切な認証を与える必要があります

    Authentication authentication = new UsernamePasswordAuthenticationToken("dummy", "password");
    SecurityContext securityContext = SecurityContextHolder.getContext();
    securityContext.setAuthentication(authentication);
于 2012-09-29T06:15:07.343 に答える
-2

これは、Springsecurity@Securedアノテーションを使用する必要がある良い例だと思います

  • @Securedアノテーションとは何ですか?
    バージョン2.0以降、Spring Securityは、サービスレイヤーメソッドにセキュリティを追加するためのサポートを大幅に改善しました。JSR-250アノテーションセキュリティとフレームワークの元の@Securedアノテーションのサポートを提供します。

    出典:Spring Security3.1リファレンス2.4メソッドセキュリティ
    @Securedアノテーションを使用すると、メソッドに制限を設けることができます。たとえば、すべての登録ユーザーがget()メソッドにアクセスできるようにすることができます。ただし、edit()メソッドの場合は、管理者のみがアクセスできるようにマークを付けることができます。


http://burtbeckwith.com/blog/?p=1398http://krams915.blogspot.in/2010/12/spring-security-3-mvc-using-secured.htmlでいくつかのチュートリアルを確認してください。

于 2012-09-28T18:54:54.507 に答える