Записать класс прокси/обертки для собственного обслуживания в джерси

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

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

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

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

Идея состоит в том, чтобы иметь путь /api/proxy/ {request}, который проксирует /api/ {request}, и возвращает запрос JSON, подобный Facebook-Graph {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

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

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

https://gist.github.com/ebb9a5052575b0a3f41f

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