Записать класс прокси/обертки для собственного обслуживания в джерси
Я хочу получить доступ к сервису полного отдыха с базовым запуском 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
Поскольку это не ответ на мой первоначальный вопрос, я оставлю его открытым.