|
|
|
Как использовать JSESSIONID, полученный из сервлета в апплете?
|
|||
|---|---|---|---|
|
#18+
Хочется сделать, чтобы пользователь логинился в систему, запускал апплет, и с помощью него посылал на сервер через сервлет необходимую инфу. А сервлет автоматически распознавал пользователя по 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! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 02:03:04 |
|
||
|
Как использовать JSESSIONID, полученный из сервлета в апплете?
|
|||
|---|---|---|---|
|
#18+
Вопрос снимается. После обсуждения вопроса с более опытными коллегами решено отказаться от такого решения в пользу более секьюрного варианта с генерацией одноразового пароля для апплета. Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2013, 12:28:23 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=224&tid=2129143]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
33ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 272ms |
| total: | 425ms |

| 0 / 0 |
