0

ビジネス クラスを EJB3 セキュリティ アノテーションで保護しています。Spring コントローラーからこれらのメソッドを呼び出したいのですが、どうすればよいですか?

編集セットアップに関する情報を追加します。Web コンテナには Tomcat を使用し、EJB を Tomcat に埋め込むには OpenEJB を使用しています。私は春のどのバージョンにも落ち着いていないので、多かれ少なかれ提案を受け付けています。

現在のセットアップの編集Userは次のように機能します。ログインフォームと、 SessionContext 内に pojo を配置するコントローラーがあります。誰かがサイトの保護された部分にアクセスするたびに、アプリケーションはユーザー pojo をチェックし、そこにある場合はロールをチェックしてからページを表示し、適切なメッセージを表示しないかログイン ページにリダイレクトしない場合はページを表示します。これで、 openejb security examples にあるこのコードのリミックスUserである可能性のあるセキュリティ コンテキストをバイパスする内部の call メソッドのおかげで、ビジネス コールが行われます。

Caller managerBean = (Caller) context.lookup("ManagerBeanLocal");
managerBean.call(new Callable() {
    public Object call() throws Exception {

        Movies movies = (Movies) context.lookup("MoviesLocal");

        movies.addMovie(new Movie("Quentin Tarantino", "Reservoir Dogs", 1992));
        movies.addMovie(new Movie("Joel Coen", "Fargo", 1996));
        movies.addMovie(new Movie("Joel Coen", "The Big Lebowski", 1998));

        List<Movie> list = movies.getMovies();
        assertEquals("List.size()", 3, list.size());

        for (Movie movie : list) {
            movies.deleteMovie(movie);
        }

        assertEquals("Movies.getMovies()", 0, movies.getMovies().size());
        return null;
    }
});
4

1 に答える 1

0

サーブレット コンテナーの構成方法に応じて、Spring セキュリティの有無にかかわらず、Spring コントローラー (または任意のサーブレット コンテナー コンポーネント) は、EJB コンテナーでシームレスに認証されます。セキュリティ コンテキストの伝播を構成する方法、または run-as モードで EJB コンテナーとの信頼レベルを確立する方法については、サーブレット コンテナーのドキュメントを確認する必要があります。

詳細を提供できるように、構成の詳細 (EJB およびサーブレット コンテナー、バージョン、同じ場所に配置されているかどうか、認証が行われている場所など) を追加してください。

編集 2 月 20 日。セキュリティ コンテキストの伝播

次のように引数なしのコンストラクターを使用してコンテキストを取得していると仮定します。
InitialContext context = new InitialContext();

OpenEJB へのセキュリティの伝搬を確認できます。他の構成は必要ありません。コンテキストを使用して Bean を検索するとすぐに、セキュリティ コンテキスト (ユーザーとロール) が EJB コンテナーに渡されます。

したがって、Tomcat のセキュリティだけに集中する必要があります。Tomcat をどのように構成したかはまだわかりません。tomcat のユーザー、ロール、レルムなどの構成をさらに表示できますか?

2月20日編集。Tomcatでテスト

JSP/サーブレットでユーザー ロールを取得する方法を参照し、JSP/サーブレットで最初にテストして、ユーザー プリンシパルとロールを正しく取得していることを確認してください。このテストに合格したら、セキュリティ アノテーション付き EJB メソッドをテストして、セキュリティの伝播を確認できます。

于 2011-02-20T05:12:01.520 に答える