【问题标题】:How to authenticate websocket client in jetty?如何在码头验证 websocket 客户端?
【发布时间】:2015-01-12 08:36:43
【问题描述】:
我在服务器端使用嵌入式码头,它将接受 http 和 websocket 请求。我正在使用 org.eclipse.jetty.security.authentication.FormAuthenticator 来验证用户。用户登录后,我的 javascript 代码将打开与服务器的 websocket 连接。我想知道服务器如何验证这个 websocket 客户端,以避免接受来自未经授权的客户端(比如 java 客户端)的 websocket 连接。
【问题讨论】:
标签:
authentication
websocket
jetty
client
【解决方案1】:
假设您已正确设置嵌入式码头,它将使用与普通 webapp 相同的安全约束系统来验证分配给该 websocket 的 url 模式的用户角色。
如果用户未通过身份验证并设置为该 websocket 的授权角色,这将阻止 websocket 升级甚至发生(在服务器端尝试)。
但是要知道,浏览器在场景中的行为非常不同。如果存在身份验证或授权问题,您可能不会从 javascript WebSocket 对象中得到一个像样的错误消息。它只会匿名失败,客户端仅关闭代码(例如 1006)并且没有关闭原因。