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