我在服务器端使用嵌入式jetty,它将同时接受http和websocket请求。我正在使用 org.eclipse.jetty.security.authentication.FormAuthenticator 来验证用户身份。用户登录后,我的javascript代码将打开与服务器的websocket连接。我想知道服务器如何验证这个websocket客户端,以避免接受来自未授权客户端(例如,Java客户端)的websocket连接。
答案 0 :(得分:0)
假设您已正确设置嵌入式jetty,它将使用普通webapp的相同安全约束系统来验证分配给该websocket的url模式的用户角色。
如果用户未经过身份验证并设置了该websocket的授权角色,这将阻止websocket升级甚至发生(在服务器端尝试)。
然而,知道浏览器在场景中的表现非常不同。如果存在身份验证或授权问题,您可能无法从javascript WebSocket对象中获得正确的错误消息。它只是匿名失败,客户端只有密码(例如1006),没有接近原因。