![](/img/trans.png)
[英]Websockets Using Spring + SockJS + STOMP on Magnolia CMS
[英]Best approach to use Spring websockets (sockJS + Stomp) with token based authentication (JWT)
我想在具有通过Json Web令牌 (JWT)进行基于令牌的身份验证的Spring Boot应用程序中使用websockets( 带有Stomp的sockJS )。 服务器上有一个验证JWT令牌的过滤器,该令牌发送给请求标头,但SockJS客户端api不支持标头。 这意味着,当SockJS客户端api尝试与服务器进行websocket握手时,例如:
new SockJS("http://localhost:8080/websocket")
JWT授权过滤器将拦截HTTP请求,并且握手将失败,因为请求上没有标头,因此请求将被过滤器拒绝。 我已经在论坛中看到了几种建议的解决方法,但是这些解决方法似乎都不适合这种情况:
我在这里发现可以通过查询参数在SockJS握手URL上发送令牌,并且我必须更改身份验证过滤器以查找查询参数,而不仅仅是标头。 出于安全原因,我真的不喜欢在查询参数上发送令牌的解决方案。 有没有更好的选择,或者这真的是最好的方法吗?
HandshakeInterceptor:此解决方案不起作用,因为过滤器始终在拦截器之前执行。
这是我使用与您完全相同的设置所做的。
您需要将websocket endpoint
添加到
@Override public void configure(WebSecurity registry)
喜欢
registry.ignoring().antMatchers("/websocket/**");
这将告诉Spring安全性不会触发套接字端点,因此会为jwt
设置过滤器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.