Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT RPC安全性、http头、身份验证和requestbuilder_Java_Gwt_Authentication_Rest_Gwt Rpc - Fatal编程技术网

Java GWT RPC安全性、http头、身份验证和requestbuilder

Java GWT RPC安全性、http头、身份验证和requestbuilder,java,gwt,authentication,rest,gwt-rpc,Java,Gwt,Authentication,Rest,Gwt Rpc,我假设GWT RPC实际上使用RequestBuilder 是否有方法提取RPC服务异步请求者使用的RequestBuilder实例 实际上,我的问题是,如何提取RequestBuilder实例以将身份验证令牌作为http头插入?有没有办法将http头插入到RPC服务请求中 即使我可以在请求中插入一个http头,那么如何让远程servlet期望该身份验证令牌呢?因此,事实上,GWT RPC是否提供了安全身份验证的框架 我认为答案是否定的,或者至少不是以一种方便的方式。我说得对吗 我将RestEa

我假设GWT RPC实际上使用RequestBuilder

是否有方法提取RPC服务异步请求者使用的RequestBuilder实例

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

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

我认为答案是否定的,或者至少不是以一种方便的方式。我说得对吗

我将RestEasy与通过SSL的RestyGWT结合使用,我们可以随时插入头文件。顺便说一句,RestyGWT构造其请求以使用RequestBuilder

我的实际动机是比较GWT RPC和GWT JAX-RS(RestyGWT+RestEasy)之间的安全有效性。因此,作为回答者,如果您有其他详细论述,将RPC的安全有效性与直接使用RequestBuilder或REST进行比较(而不是直接回答此问题),请随时详细说明

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

您可以让您的异步方法返回
请求
请求生成器
,而不是
无效
Request
允许您
abort()
挂起的请求,而
RequestBuilder
允许您在发送请求之前修改请求(如果您将返回类型声明为
RequestBuilder
,则您负责调用
send()
,以实际发出请求)


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

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

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

MyServiceAsync myService = GWT.create(MyService.class);
MyRequestBuilder myRequestBuilder = new MyRequestBuilder();
myRequestBuilder.addHeader("header", "value");
((ServiceDefTarget) serviceInstance).setRpcRequestBuilder(myRequestBuilder);
MyRequestBuilder扩展了RpcRequestBuilder。在MyRequestBuilder中,我覆盖了方法doFinish(requestbuilderrb),在这里我放置了我的头

也许这不是一个超级解决方案,但我还没有找到更好的解决方案


2) 对于服务器端,我将实现AuthenticationFilter来检查标头,并在调用Servlet之前执行服务器端身份验证功能。

从这里开始,但您正在强制转换变量
serviceInstance
。你是否真的应该使用
myService
?那是打字错误还是我遗漏了什么?