security - 如何在 Java EE 7 中保护 Websocket 服务器

标签 security websocket java-ee-7

我想使用 Web 套接字创建一个简单的 CRUD 应用程序,使用 Java EE 7 Websocket 服务器,在 Glassfish 4 上运行,与单页网站通信。我的问题是:如何保护我的应用程序?换句话说:如何执行用户身份验证和授权?因为有几条消息我希望服务器仅在请求用户进行身份验证和授权后才回复。最后但同样重要的是:我如何提供“记住我”功能?谢谢。

最佳答案

一个实用的方法是让用户通过您的网页登录,在身份验证成功后从您的 Web 应用程序设置一个 cookie,并在来自该页面的传入 WebSocket 连接上检查您的 WebSocket 服务器中的该 cookie。

这将要求从同一来源提供网页和 WebSocket(否则浏览器不会在 WebSocket 连接上发送 cookie)。

另一种可能性是通过 WebSocket 连接之上的消息实现自定义身份验证机制。

另一种可能性是使用 TLS 和基于客户端证书的身份验证。

请注意,尽管 WebSocket 具有基于 HTTP 的初始打开握手,原则上您可以使用任何 HTTP 身份验证机制,但存在实际限制。例如。使用 HTTP 基本身份验证,浏览器将为纯 HTML 页面请求呈现登录对话框,但不会为所谓的子资源呈现登录对话框,例如图像请求......和 ​​WebSocket(也算作子资源)。

关于security - 如何在 Java EE 7 中保护 Websocket 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507512/

相关文章:

java - 我可以使用 4096 位作为带有 OAEP 填充的 Java RSA 的 key 长度吗?

java - 如何在 Java 中查找 Cipher 是否需要 IV?

java - Tyrus websocket 客户端 @OnMessage 从未调用过 - Storj 开源项目

c++ - 如何重新连接到不响应 close() 的服务器

java - 为什么数据库连接一直关闭

java - 无法在 Wildfly 上部署 EAR 项目

security - Grails过滤器:无法使其正常工作!

c - 此缓冲区溢出是否适用于 Mac OSX?

javascript - websocket.close()函数继续运行后

jax-rs - 为 JAX-RS 2.0 客户端 API 配置代理