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,我们可以随时插入标题.顺便说一下,RestyGWT构造了使用RequestBuilder的请求.
我的实际动机是比较GWT RPC和GWT JAX-RS(RestyGWT + RestEasy)之间的安全有效性.因此,如果您作为回答者,有一个替代的详细话语,比较RPC的安全有效性与直接使用RequestBuilder或REST(而不是直接回答这个问题),请随意详细说明.
我是否正确地假设GWT RPC不是安全友好/有效的,我应该避免使用GWT RPC来进行安全的身份验证请求?
您可以让异步方法返回a Request或a RequestBuilder而不是void.Request允许您进入abort()待处理请求,而RequestBuilder允许您在发送请求之前修改请求(如果您将返回类型声明为RequestBuilder,则您负责调用send()实际发出请求).
或者,您可以使用an RpcRequestBuilder来自定义使用RequestBuilder特定异步服务代理进行的每个调用.
据我所知,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函数.
| 归档时间: |
|
| 查看次数: |
3659 次 |
| 最近记录: |