3

GWTRPCは実際にRequestBuilderを使用していると思います。

RPCサービス非同期リクエスターによって使用されるRequestBuilderインスタンスを抽出する方法はありますか?

実際、私の質問は、RequestBuilderインスタンスをどのように抽出して、認証トークンをhttpヘッダーとして挿入するのかということです。httpヘッダーをRPCサービスリクエストに挿入する方法はありますか?

リクエストにhttpヘッダーを挿入できたとしても、リモートサーブレットにその認証トークンを期待するように指示するにはどうすればよいでしょうか。したがって、実際、GWT RPCは安全な認証のためのフレームワークを提供しますか?

私は答えがノーだと思っています、あるいは少なくとも便利な方法ではありません。私は正しいですか?

私は、RestEasyをRestyGWT over SSLと組み合わせて使用​​したことから来ています。ここでは、いつでもヘッダーを挿入できます。ところで、RestyGWTはRequestBuilderを使用するためのリクエストを作成します。

私の実際の動機は、GWTRPCとGWTJAX-RS(RestyGWT + RestEasy)のセキュリティ効果を比較することです。したがって、回答者として、RPCのセキュリティ効果をRequestBuilderまたはRESTを直接使用して(この質問に直接回答するのではなく)比較する別の詳細な談話がある場合は、遠慮なく詳しく説明してください。

GWT RPCはセキュリティに優しく/効果的ではないと推測する権利がありますか?安全な認証済みリクエストにGWTRPCを使用することは避けてください。

4

2 に答える 2

6

非同期メソッドに、の代わりにRequestまたはを返すようにすることができます。保留中のリクエストを許可しますが、送信前にリクエストを変更できます(return-typeをとして宣言する場合は、実際にリクエストを行うために呼び出す責任があります)。RequestBuildervoidRequestabort()RequestBuilderRequestBuildersend()

または、を使用して、特定の非同期サービスプロキシで行われるすべての呼び出しRpcRequestBuilderをカスタマイズできます。RequestBuilder

于 2012-06-06T09:44:26.743 に答える
6

私の知る限り、gwtrpc用の組み込みのセキュリティソリューションはありません。しかし、そのような認証が必要な場合は、次の手順を実行します。

1)httpヘッダーを設定できるようにするには、私自身と同じように、カスタムリクエストビルダーを作成できます。

MyServiceAsync myService = GWT.create(MyService.class);
MyRequestBuilder myRequestBuilder = new MyRequestBuilder();
myRequestBuilder.addHeader("header", "value");
((ServiceDefTarget) serviceInstance).setRpcRequestBuilder(myRequestBuilder);

MyRequestBuilderはRpcRequestBuilderを拡張します。そして、MyRequestBuilder内で、ヘッダーを配置するメソッドdoFinish(RequestBuilder rb)をオーバーライドします。

たぶんそれは素晴らしい解決策ではありませんが、私はまだこれ以上良いものを見つけていません。

2)サーバー側では、ヘッダーをチェックするためのAuthenticationFilterを実装し、サーブレットを呼び出す前にサーバー側の認証機能を実行します。

于 2012-06-06T10:04:01.590 に答える