powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как использовать JSESSIONID, полученный из сервлета в апплете?
2 сообщений из 2, страница 1 из 1
Как использовать JSESSIONID, полученный из сервлета в апплете?
    #38300847
wdefik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочется сделать, чтобы пользователь логинился в систему, запускал апплет, и с помощью него посылал на сервер через сервлет необходимую инфу. А сервлет автоматически распознавал пользователя по 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
Как использовать JSESSIONID, полученный из сервлета в апплете?
    #38301326
wdefik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снимается. После обсуждения вопроса с более опытными коллегами решено отказаться от такого решения в пользу более секьюрного варианта с генерацией одноразового пароля для апплета.
Спасибо за внимание.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как использовать JSESSIONID, полученный из сервлета в апплете?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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