Я хотел бы создать простое приложение CRUD с использованием веб-сокетов с веб-сервером Java EE 7 Websocket Server, работающим на Glassfish 4, общающимся с одним веб-сайтом. Мой вопрос: как я могу защитить свое приложение? Другими словами: как я могу выполнить аутентификацию пользователя и авторизацию? Потому что есть несколько сообщений, на которые я хотел бы, чтобы сервер отвечал только после авторизации и авторизации запрашивающего пользователя. И последнее, но не менее важное: как я могу обеспечить функцию «запомнить меня»? Спасибо.Как защитить сервер Websocket в Java EE 7
ответ
Практический метод заключается в том, чтобы пользователь мог войти в систему через вашу веб-страницу, установив файл cookie из вашего веб-приложения при успешной аутентификации и проверить, что cookie на вашем сервере WebSocket на входящем соединении WebSocket со страницы.
Для этого требуется, чтобы веб-страница и WebSocket служили от одного источника (иначе браузер не будет отправлять cookie на соединение WebSocket).
Другая возможность - реализовать механизм аутентификации через сообщения поверх соединения WebSocket.
Другая возможность заключается в использовании аутентификации на основе TLS и на основе сертификата клиента.
Обратите внимание, что хотя WebSocket имеет начальное рукопожатие, основанное на HTTP, и вы можете в принципе использовать любой механизм проверки подлинности HTTP, существуют практические ограничения. Например. с базовой аутентификацией HTTP браузеры будут отображать диалоговые окна входа для простых запросов HTML-страниц, но не для так называемых подресурсов, например запросов на изображения .. и WebSocket (который также считается подресурсами).
- 1. Найти сеанс websocket по id в Java EE 7
- 2. несериализуемая сессия websocket java ee
- 3. как защитить файлы приложений Java EE
- 4. Запуск Java EE 7 WebSockets в Tomcat 7
- 5. сервер websocket для android, java
- 6. Java EE 7 Совместимые серверы?
- 7. request.login() в Java EE 7?
- 8. Конфигурирование параметров пути в конечных точках WebSocket в Java EE
- 9. WebSockets в Java EE?
- 10. Разница между Java EE 7 и Java EE 6
- 11. Spring vs Java EE 7
- 12. Примеры использования Java 7 EE
- 13. Автономный сервер приложений Java EE
- 14. Java EE: использует ли Java EE 7 собственный код?
- 15. Swing и Java EE-сервер
- 16. Как защитить сервер SMTP с помощью Java
- 17. CDI + управляемый параллелизм в Java EE 7
- 18. Возможные ограничения Java EE 7 - ManagedThreadFactory
- 19. Модернизация JMS API в Java EE 7
- 20. Использование JSF beans в Java EE 7
- 21. Какая фаза в Java EE 7?
- 22. Класс Bean в Java EE 7
- 23. Websocket (java ee) как получить роль текущего пользователя
- 24. Когда использовать сервер приложений Java EE?
- 25. Eclipse, Java EE и сервер tomcat6
- 26. Необходимо обновить код приложения Java EE 1.4 до EE 7
- 27. Как развернуть сервер WebSocket?
- 28. Как защитить сервер сокетов весной?
- 29. Encode с Java EE 7 для Javax.mail.message
- 30. Безопасность + аутентификация + авторизация с Java EE 7
Спасибо за ваш добрый и исчерпывающий ответ. Думаю, я предпочитаю решение на основе файлов cookie. Что бы вы вложили в cookie? Случайный идентификатор, хранящийся на сервере, а также связанный с пользователем? Вы знаете какой-нибудь пример этого решения? –
Если используется для аутентификации, cookie может быть случайной строкой. Обратите внимание, что вы хотите запустить TLS вообще (так как в противном случае cookie может быть обнюхано человеком в средних противниках). И да, тогда вы можете связать информацию о пользователе на своем сервере с этим значением cookie. Если вы хотите хранить информацию внутри файла cookie (я бы не рекомендовал вообще), тогда вам может понадобиться значение cookie не только «простых» данных, но и криптографически подписанное. В противном случае любой может ввести данные, которые не были созданы вами (вектор атаки). – oberstet
Еще раз спасибо, я оценил вашу доброту! –