Java 通过基于令牌的身份验证(JWT)使用SpringWebSocket(sockJS+;Stomp)的最佳方法
我想在Spring boot应用程序中使用websockets(),该应用程序通过(JWT)进行基于令牌的身份验证。在服务器上有一个用于验证JWT令牌的筛选器。此令牌通过请求头发送,但客户端api不支持头。这意味着,当SockJS客户端api尝试与服务器进行websocket握手时,例如:Java 通过基于令牌的身份验证(JWT)使用SpringWebSocket(sockJS+;Stomp)的最佳方法,java,spring,websocket,jwt,sockjs,Java,Spring,Websocket,Jwt,Sockjs,我想在Spring boot应用程序中使用websockets(),该应用程序通过(JWT)进行基于令牌的身份验证。在服务器上有一个用于验证JWT令牌的筛选器。此令牌通过请求头发送,但客户端api不支持头。这意味着,当SockJS客户端api尝试与服务器进行websocket握手时,例如: new SockJS("http://localhost:8080/websocket") HTTP请求将被JWT授权筛选器截获,握手将失败,因为请求上没有头,因此,筛选器将拒绝请求。我在论坛上看到了一些建
new SockJS("http://localhost:8080/websocket")
HTTP请求将被JWT授权筛选器截获,握手将失败,因为请求上没有头,因此,筛选器将拒绝请求。我在论坛上看到了一些建议的变通方法,但没有一个适合这种情况:
- 握手侦听器:此解决方案不起作用,因为筛选器总是在侦听器之前执行
- 在STOMP头上发送身份验证头也不起作用,因为STOMP连接自然发生在握手之后
websocket端点添加到
@Override public void configure(WebSecurity registry)
像
这将告诉spring security不要为套接字端点触发,从而为jwt
设置过滤器
registry.ignoring().antMatchers("/websocket/**");