Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как использовать JSESSIONID, полученный из сервлета в апплете? / 2 сообщений из 2, страница 1 из 1
18.06.2013, 02:03:04
    #38300847
wdefik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать JSESSIONID, полученный из сервлета в апплете?
Хочется сделать, чтобы пользователь логинился в систему, запускал апплет, и с помощью него посылал на сервер через сервлет необходимую инфу. А сервлет автоматически распознавал пользователя по JSESSIONID. В случае, если запускаю апплет как webstart не со страницы системы, а,например, со сгенеренной сборкой javafx странички, передавая туда такие же параметры, что описаны ниже, то все работает. Но, если все то же самое со страницы системы - как описано ниже. В обоих случаях вызывется сервлет по урлу https://localhost/portal/servlet
Ресурс защищен аутентификацией.

1) В jsp страницу встроен JavaFx апплет, запускается как web start. Передаю следующие параметры в апплет:
<script>
function launchScannerApp()
{
dtjava.launch(
{
url: 'launch.jnlp',
params:
{
serverSessionId: "<%=session.getId()%>"
}
},
{
javafx : '2.2+'
},
{}
);
return false;
}
</script>

2) Апплет запускается, логирует реальный переданный id сессии и вызывает сервлет с помощью HttpsUrlConnection:
HttpsURLConnection conn = (HttpsURLConnection) receiverUrl.openConnection();
//некая магия по игнорированию ошибок валидации сертификата сервера
сonn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Content-Type", "application/octet-stream");
conn.setRequestProperty("Cookie", "JSESSIONID=" + serverSessionId);
conn.setRequestProperty("Cache-Control", "no-cache");
conn.setRequestMethod("POST");
conn.setDefaultUseCaches(false);

ObjectOutputStream os = new ObjectOutputStream(conn.getOutputStream());
os.writeObject(myObject);
os.flush();
os.close();

String respCode = connection.getResponseCode(); // получаем 200
String respMsg = connection.getResponseMessage(); // получаем OK

Далее читаю ответ с помощью connection.getInputStream() , и получаю текст страницы логона.

Видимо апплет что-то цепляет от сервера при запуске? т.к. апплет, запущенный со статической html страницы
отрабатывает как надо.

Any help is appreciated!
...
Рейтинг: 0 / 0
18.06.2013, 12:28:23
    #38301326
wdefik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как использовать JSESSIONID, полученный из сервлета в апплете?
Вопрос снимается. После обсуждения вопроса с более опытными коллегами решено отказаться от такого решения в пользу более секьюрного варианта с генерацией одноразового пароля для апплета.
Спасибо за внимание.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как использовать JSESSIONID, полученный из сервлета в апплете? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]