0

サービス層として EJB 3 アプリケーションを使用し、クライアントとして Tapestry 5 Web アプリケーションを使用しています。EJB は、Web アプリで使用するためのセッション ファサードを提供する必要があります。

EJB レイヤーで定義された操作を実行するには、ユーザーは Web インターフェースからログインする必要があります。エンティティー・レベルのセキュリティーが必要なので、ここでは Java EE 宣言型セキュリティーはほとんど役に立ちません。

この種のセットアップでセキュリティを実装するにはどうすればよいですか? クライアントを切り替える場合に備えて、EJB レイヤーに実装してから、Web アプリに実装したいと考えています。

Web アプリで http セッションを使用してユーザー セッションを保存し、ステートレス EJB 呼び出しごとに User オブジェクトを渡すことができます。

public void doStuff(params, User user);

ステートフル セッション Bean はここでの解決策ですか?

編集:エンティティレベルのセキュリティとは、行レベルのセキュリティを意味します。

4

1 に答える 1

1

エンティティ レベル セキュリティとは正確にはどういう意味ですか?

あなたが正しく理解している場合、ログインしているユーザーを使用して Web アプリケーションから SLSB を直接呼び出しますか?

その場合: リソースとして注入された SessionContext を取得する Inteceptor を作成し、この Interceptor で SLSB に注釈を付けます... Interceptor の @AroundInvoke で、SessionContext からプリンシパルを取得し、そこから必要なことを何でも実行できます (たとえば、データベースにクエリを実行するユーザーと何かが間違っている場合は、インターセプターから直接例外をスローし、SLSB に送信しません)。

于 2012-05-30T13:26:37.983 に答える