У меня есть следующий сценарий:
Сервер: 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.
Что мне, кажется, не хватает здесь?