我想使用Web套接字创建一个简单的CRUD应用程序,其中一个Java EE 7 Websocket服务器在Glassfish 4上运行,与单个页面网站进行通信。我的问题是:我如何保护我的申请?换句话说:我如何执行用户身份验证和授权?因为有一些消息我希望服务器仅在请求用户的身份验证和授权之后才能回复。最后但同样重要的是:我怎样才能提供“记住我”功能?谢谢。
答案 0 :(得分:4)
一种实用的方法是让用户通过您的网页登录,在成功验证后从您的Web应用程序设置cookie,并在页面上的传入WebSocket连接上检查WebSocket服务器中的cookie。
这将要求Web页面和WebSocket从同一个源服务(否则浏览器不会在WebSocket连接上发送cookie)。
另一种可能性是通过WebSocket连接上的消息实现自定义身份验证机制。
另一种可能性是使用基于TLS和客户端证书的身份验证。
请注意,虽然WebSocket具有基于HTTP的初始打开握手,并且您原则上可以使用任何HTTP身份验证机制,但是存在实际限制。例如。使用HTTP基本身份验证,浏览器将呈现纯HTML页面请求的登录对话框,但不会出现所谓的子资源,如图像请求和WebSocket(也称为子资源)。