2012-06-06 5 views
2

GWT RPC가 실제로 RequestBuilder를 사용한다고 가정합니다.GWT RPC 보안, http 헤더, 인증 및 요청 작성자

내 RPC 서비스 비동기 요청자가 사용하는 RequestBuilder 인스턴스를 추출하는 방법이 있습니까?

사실, 내 질문은 어떻게 인증 헤더를 HTTP 헤더로 삽입하도록 RequestBuilder 인스턴스를 추출합니까? HTTP 헤더를 RPC 서비스 요청에 삽입 할 수 있습니까?

요청에 http 헤더를 삽입 할 수 있다고해도 원격 서블릿에 인증 토큰이 있어야한다는 것을 어떻게 알 수 있습니까? 따라서 실제로 GWT RPC는 안전한 인증을위한 프레임 워크를 제공합니까?

나는 대답이 아니오라고 생각하고 있거나 적어도 편리한 방법은 아닙니다. 내가 맞습니까?

Restyasy를 SSL을 통한 RestyGWT와 함께 사용했기 때문에 언제든지 헤더를 삽입 할 수 있습니다. BTW, RestyGWT는 RequestBuilder 사용 요청을 구성합니다.

내 실제 동기는 GWT RPC와 GWT JAX-RS (RestyGWT + RestEasy) 간의 보안 효과를 비교하는 것입니다. 따라서 응답자로서 RPC의 보안 효과를 RequestBuilder 또는 REST (직접적으로이 질문에 답하는 것이 아니라)를 직접 사용하는 것과 비교하는 대안적인 담론을 가지고 있다면 정교하게 자유롭게 이야기하십시오.

GWT RPC가 보안 상 친숙하지 않고 효과적이지 않다고 가정하면 보안 인증 요청에 GWT RPC를 사용하지 않아야합니까?

답변

6

당신은 당신의 비동기 방법은 Request 또는 대신 voidRequestBuilder을 반환 수 있습니다. Request을 사용하면 abort()을 보류중인 요청으로 허용하고 RequestBuilder을 사용하면 반환하기 전에 요청을 수정할 수 있습니다. 응답 유형을 RequestBuilder으로 지정하면 send()을 호출하면 실제로 요청할 수 있습니다.

RpcRequestBuilder을 사용하면 특정 비동기 서비스 프록시를 사용하여 호출 할 때마다 RequestBuilder을 사용자 정의 할 수 있습니다.

5

내가 아는 한 gwt rpc에 대한 보안 솔루션은 없습니다. 하지만 이러한 인증은 내가 다음 단계 만들 것해야하는 경우 :

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

MyRequestBuilder이 RpcRequestBuilder를 확장 : 나 자신처럼

1), 당신은 사용자 정의 요청 빌더를 할 수 HTTP 헤더를 설정 할 수를 . 그리고 MyRequestBuilder 내에서 헤더를 넣는 doFinish (RequestBuilder rb) 메서드를 재정의합니다.

어쩌면 그것은 슈퍼 솔루션이 아니지만 아직 더 좋은 점을 발견하지 못했습니다.

2) 서버 쪽에서는 Servlet을 호출하기 전에 헤더를 검사하고 서버 측 인증 기능을 수행하기 위해 AuthenticationFilter를 구현할 것입니다.

+1

무덤의 'serviceInstance' 변수를 전송 중입니다. 실제로'myService'를 캐스팅해야합니까? 저것은 오타입니까? 아니면 제가 빠진 것이 있습니까? –