Написать прокси / класс-оболочку для собственного сервиса в Джерси - PullRequest
3 голосов
/ 27 марта 2011

Я хочу получить доступ к полному сервису отдыха с запущенной базовой аутентификацией http. Однако для клиента браузера javascript нет способа подавить окно проверки подлинности, если предоставлено неверное удостоверение .

Я думал о разных методах решения этой проблемы

  • кто-то предложил удалить заголовок WWW-Authenticate с помощью фильтра (я не думаю, что это чистый подход)
  • я мог бы переписать свое приложение, чтобы вообще не использовать Basic Http Auth (я думаю, что это слишком много проблем)
  • я мог бы написать прокси, который общается с моим обычным сервисом

Мне больше нравится последний подход. Я сохраняю свой обычный интерфейс отдыха, но у меня также есть возможность использовать этот интерфейс с не очень гибкими клиентами. Более того, позже я могу использовать Http-запросы через прокси-сервер, которые не поддерживаются некоторыми браузерами.

Идея состоит в том, чтобы иметь путь / api / proxy / {request}, который проксирует к / api / {request} и возвращает JSON-запрос в стиле Facebook-графика {data: {data}, error: {error}}

Это заглушка класса Proxy

@Path("proxy")
public class ProxyResource {
@GET()
@Path("{url: [a-zA-Z/]*}")
public String get(@Context Request request, @PathParam("url") String url) {
        // remove proxy/ from path
        // resend request
        // verify result
}

} Я могу получить доступ к запросу (который, как представляется, ContainerRequest). Как я могу изменить запрос, не создавая его с нуля, чтобы отправить его заново.

Редактировать: когда кто-то знает лучший подход, я рад услышать об этом.

1 Ответ

1 голос
/ 31 марта 2011

Когда я начал копать глубже, я обнаружил, что проблема не в 401. Заголовок www-authenticate, отправленный обратно с сервера, заставил браузер открыть окно входа в систему.

Если кому-то интересно, я написал небольшой прокси-узел nodejs для удаления www-аутентификации из всех запросов к серверу.

https://gist.github.com/ebb9a5052575b0a3f41f

Поскольку это не ответ на мой первоначальный вопрос, я оставлю его открытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...