У меня есть следующий сценарий:
Сервер: Jetty (с настроенным JAAS)
Клиент: Джерси вызывается через JUnit (через Maven)
У меня настроен JAAS на веб-сервере. Я использую клиентскую часть в качестве теста.
На стороне сервера пользователи проходят аутентификацию через форму с базовой аутентификацией, обрабатываемой через JAAS. Очевидно, что пользователям необходимо пройти проверку подлинности, прежде чем они смогут просматривать определенные страницы.
Я бы хотел иметь возможность войти через Джерси, прежде чем пытаться получить доступ к защищенной странице. Как это может быть сделано? Я проверил, что вы можете определить фильтр, но я не совсем уверен, как его использовать. И - как только пользователь войдет в систему через форму, как я могу перейти (со стороны клиента) на страницу, которая мне действительно интересна?
Я был бы очень признателен, если бы кто-нибудь показал мне пример того, как это делается на стороне клиента с Джерси.
У меня есть следующий метод теста JUnit:
@Test
public void testLogin()
throws IOException
{
String URL_LOGIN = "http://localhost:9080/foo/auth.html";
Client client = Client.create();
String username = "me";
String password = "me";
final HTTPBasicAuthFilter authFilter = new HTTPBasicAuthFilter(username, password);
client.addFilter(authFilter);
client.addFilter(new LoggingFilter());
WebResource webResource = client.resource(URL_LOGIN);
// I even tried:
// webResource.header("Authorization", "Basic " + "base64encoded_userid:password").type("application/xml");
String page = webResource.post(String.class);
System.out.println(page);
}
Обратите внимание:
1) http://localhost:9080/foo/auth.html - это страница, которую я должен увидеть при успешной аутентификации.
2) Я на самом деле вижу вывод http://localhost:9080/foo/login.html.
3) Очевидно, что через браузер я могу успешно войти через страницу login.html.
Чего мне здесь не хватает?