我想在Spring启动应用程序中使用websockets(sockJS with Stomp),该应用程序通过Json Web Token(JWT)进行基于令牌的身份验证。在服务器上有一个验证JWT令牌的过滤器。此令牌发送请求头但SockJS客户端api不支持头。这意味着,当SockJS客户端API尝试与服务器进行websocket握手时,例如:
new SockJS("http://localhost:8080/websocket")
HTTP请求将被JWT授权过滤器截获,并且握手将失败,因为请求中没有标头,因此过滤器将拒绝请求。我已经看到在论坛中提出了几种解决方法,但它们似乎都不适合这种情况:
我发现here可以通过查询参数在SockJS握手URL上发送令牌,我必须更改身份验证过滤器以查找查询参数,而不仅仅是标题。出于安全原因,我不太喜欢在查询参数上发送令牌的解决方案。有更好的选择还是这是最好的方法?