GWT RPC安全性,http头,身份验证和请求构建器

Ble*_*eek 3 java authentication rest gwt gwt-rpc

我假设GWT RPC实际上使用RequestBuilder.

有没有办法提取我的RPC服务异步请求程序使用的RequestBuilder实例?

实际上,我的问题是,如何提取RequestBuilder实例以将身份验证令牌作为http标头插入?有没有办法将HTTP标头插入RPC服务请求?

即使我可以在请求中插入一个http头,那么如何告诉远程servlet期望该身份验证令牌?因此,事实上,GWT RPC是否提供了安全身份验证的框架?

我认为答案是否定的,或者至少不是方便的.我对吗?

我使用RestEasy与RestyGWT结合使用SSL,我们可以随时插入标题.顺便说一下,R​​estyGWT构造了使用RequestBuilder的请求.

我的实际动机是比较GWT RPC和GWT JAX-RS(RestyGWT + RestEasy)之间的安全有效性.因此,如果您作为回答者,有一个替代的详细话语,比较RPC的安全有效性与直接使用RequestBuilder或REST(而不是直接回答这个问题),请随意详细说明.

我是否正确地假设GWT RPC不是安全友好/有效的,我应该避免使用GWT RPC来进行安全的身份验证请求?

Tho*_*yer 6

您可以让异步方法返回a Request或a RequestBuilder而不是void.Request允许您进入abort()待处理请求,而RequestBuilder允许您在发送请求之前修改请求(如果您将返回类型声明为RequestBuilder,则您负责调用send()实际发出请求).

或者,您可以使用an RpcRequestBuilder来自定义使用RequestBuilder特定异步服务代理进行的每个调用.


Ale*_* A. 6

据我所知,gwt rpc没有内置的安全解决方案.但如果我需要这样的身份验证,我会做以下步骤:

1)为了能够设置http标头,您可以创建自定义请求构建器,就像我自己一样:

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

MyRequestBuilder扩展了RpcRequestBuilder.在MyRequestBuilder中,我重写方法doFinish(RequestBuilder rb),我把我的标题.

也许这不是一个超级解决方案,但我还没有发现更好的东西.

2)对于服务器端,我会在调用Servlet之前实现AuthenticationFilter来检查头并执行服务器端auth函数.