我想使用 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/