2012-06-06 4 views
2

Я предполагаю, что GWT RPC фактически использует RequestBuilder.GWT RPC security, http header, authentication и requestbuilder

Есть ли способ извлечь экземпляр RequestBuilder, используемый моим агентом запроса асинхронного вызова RPC?

На самом деле, мой вопрос: как вы извлекаете экземпляр RequestBuilder для вставки маркера аутентификации в качестве заголовка http? Есть ли способ вставить заголовки HTTP в запрос службы RPC?

Даже если бы я мог вставить HTTP-заголовок в запрос, как тогда удаленному сервлету было бы ожидать, что это токен аутентификации? Таким образом, действительно ли GWT RPC обеспечивает основу для безопасной аутентификации?

Я думаю, что ответ НЕТ, или, по крайней мере, не в удобном виде. Я прав?

Я исхожу из использования RestEasy в сочетании с RestyGWT по SSL, где мы можем вставлять заголовки в любое время. BTW, RestyGWT строит свой запрос на использование RequestBuilder.

Моя фактическая мотивация сравнивает эффективность безопасности между GWT RPC и GWT JAX-RS (RestyGWT + RestEasy). Поэтому, если у вас, как у ответчика, есть альтернативный подробный дискурс, сравнивающий эффективность безопасности RPC с прямым использованием RequestBuilder или REST (а не ответом на этот вопрос напрямую), пожалуйста, не стесняйтесь уточнять.

Могу ли я предположить, что GWT RPC не является безопасным и эффективным, и я должен избегать использования GWT RPC для защищенных аутентифицированных запросов?

ответ

6

Вы можете иметь свой метод асинхронной возвращают Request или RequestBuilder вместо void. Request разрешает abort() ожидающий запрос, тогда как RequestBuilder позволяет изменить запрос до его отправки (если вы объявите возвращаемый тип как RequestBuilder, вы несете ответственность за вызов send(), чтобы действительно сделать запрос).

В качестве альтернативы вы можете использовать RpcRequestBuilder для настройки RequestBuilder для каждого вызова, выполненного с помощью специального прокси-сервера async.

5

Насколько я знаю, нет встроенного решения безопасности для 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 (RequestBuilder rb), где я помещаю свои заголовки.

Возможно, это не супер решение, но я еще не нашел ничего лучшего.

2) Для серверной части я бы использовал AuthenticationFilter для проверки заголовков и выполнения функций авторизации на стороне сервера до вызова сервлета.

+1

из могилы здесь, но вы производите переменную 'serviceInstance'. Должно ли вы на самом деле лить 'myService'? Это опечатка или я что-то упускаю? –

 Смежные вопросы

  • Нет связанных вопросов^_^