Java 如何结合Spring安全性和js sockjs客户端

Java 如何结合Spring安全性和js sockjs客户端,java,spring,spring-security,spring-websocket,sockjs,Java,Spring,Spring Security,Spring Websocket,Sockjs,我想创建一个Spring服务器和一个通过sockjs客户端连接的Broswer javascript客户端。应通过弹簧安全装置固定连接 我面临以下困境: Spring Security似乎假定websocket握手是通过经过身份验证的http会话进行的(例如,JSESSIONID cookie集、登录发生) 然而,sockjs客户端似乎对开发人员施加了限制,即必须使用不经过身份验证的http会话(请参阅),并以任何方式强制执行该限制 我对这一困境的评估是否正确,是否有任何明显的解决方案来实现带有

我想创建一个Spring服务器和一个通过sockjs客户端连接的Broswer javascript客户端。应通过弹簧安全装置固定连接

我面临以下困境:

  • Spring Security似乎假定websocket握手是通过经过身份验证的http会话进行的(例如,JSESSIONID cookie集、登录发生)

  • 然而,sockjs客户端似乎对开发人员施加了限制,即必须使用经过身份验证的http会话(请参阅),并以任何方式强制执行该限制

  • 我对这一困境的评估是否正确,是否有任何明显的解决方案来实现带有WebSocket的spring服务器的安全性,以便sockjs客户端能够安全地连接

    如果用于创建经过身份验证的HttpSession,那么在GET/info请求中传递任何身份验证令牌的建议解决方案似乎是绕过SockJS安全限制的黑客攻击

    这似乎是一些人出现问题的基础,例如:

    我认为有三种选择:

  • 不要使用SockJs,只使用本机Websockets
  • 通过查询参数令牌在经过身份验证的Http会话上使用SockJS,并牺牲一些安全性
  • 通过未经验证的http连接进行连接,并为spring WebSocket实现自定义身份验证处理(可能基于spring会话)