2015-06-01 3 views
0

Я создал REST webservice и закрепил его, используя HTTP Basic authentication.HTTP-аутентификация (Java/Jersey)

Он отлично работает и просит username/password. Но при втором запуске (если браузер все еще открыт), вебсервис не запрашивает username/password. Если я закрываю и снова открываю браузер, он работает так, как я хотел, - запрашивая аутентификацию.

Я хочу, чтобы веб-сервис запрашивал имя пользователя/пароль при каждом запуске (независимо от того, открыта ли другая веб-страница или нет).

Любая идея, что мне делать?

+2

Возможно, ваш браузер кэширует учетные данные, нет? – Blackus

+1

Это, вероятно, не о чем беспокоиться. С помощью HTTP Basic клиент вашего веб-сервиса должен аутентифицировать каждый запрос с использованием имени пользователя и пароля. Попробуйте протестировать свою службу с помощью клиента REST, такого как почтальон (вместо браузера), чтобы посмотреть, как он себя ведет. Как сказал Blackus, ваш браузер, вероятно, просто кэширует учетные данные, но это не значит, что они не отправляются каждый раз. –

+0

вы можете написать единичные тестовые примеры, чтобы убедиться в этом. – Akhil

ответ

0

Это потому, что основная схема аутентификации представляет собой схему implicit authentication.

После аутентификации браузер автоматически включит учетные данные для последующих запросов. Единственный способ предотвратить это - открыть анонимный сеанс или закрыть браузер. Эти схемы аутентификации уязвимы для атак CSRF.

Есть другие причины предпочитать другие схемы аутентификации по базовой аутентификации, как я обсуждаю в своем ответе here.

0

Нет никакого способа обойти это: браузер отправит пользователя/pw с каждым запросом, пока вы его не закроете.