Я хочу получить доступ к полному сервису отдыха с запущенной базовой аутентификацией 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). Как я могу изменить запрос, не создавая его с нуля, чтобы отправить его заново.
Редактировать: когда кто-то знает лучший подход, я рад услышать об этом.