WebSocket 握手期间出错: 'Sec-WebSocket-Accept' header 值不正确
Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value
我有一个位于 spring-security-kerberos 后面的 spring-boot websocket 连接来实现 SSO。这按预期工作,但如果我重新启动服务器,我会看到客户端无法 re-connect 并出现错误 Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value
.
我正在使用 @stomp/stompjs 4.0.8 并设置 stompClient.reconnect_delay = 5000
有什么办法可以解决吗?我担心 运行 这在负载平衡器后面会导致此错误一直发生。
这是基于the messaging-stomp-websocket example + spring-security websocket-authentication
似乎 spring-security-web RequestCacheAwareFilter
提取了缓存的请求,导致实际的 Sec-WebSocket-Key header 值被替换有一个无效的。
事件的顺序是每次客户端尝试 re-connect 客户端发出两个 websocket 请求,第一个被 WWW-Authenticate 拒绝:协商 header 而第二个包含 Authorization header 具有不同的 Sec-WebSocket-Key 值。
我能够通过完全禁用缓存来解决这个问题,例如WebSecurityConfigurerAdapter
内
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.requestCache().requestCache(new NullRequestCache())
}
我有一个位于 spring-security-kerberos 后面的 spring-boot websocket 连接来实现 SSO。这按预期工作,但如果我重新启动服务器,我会看到客户端无法 re-connect 并出现错误 Error during WebSocket handshake: Incorrect 'Sec-WebSocket-Accept' header value
.
我正在使用 @stomp/stompjs 4.0.8 并设置 stompClient.reconnect_delay = 5000
有什么办法可以解决吗?我担心 运行 这在负载平衡器后面会导致此错误一直发生。
这是基于the messaging-stomp-websocket example + spring-security websocket-authentication
似乎 spring-security-web RequestCacheAwareFilter
提取了缓存的请求,导致实际的 Sec-WebSocket-Key header 值被替换有一个无效的。
事件的顺序是每次客户端尝试 re-connect 客户端发出两个 websocket 请求,第一个被 WWW-Authenticate 拒绝:协商 header 而第二个包含 Authorization header 具有不同的 Sec-WebSocket-Key 值。
我能够通过完全禁用缓存来解决这个问题,例如WebSecurityConfigurerAdapter
@Override
protected void configure(final HttpSecurity http) throws Exception {
http.requestCache().requestCache(new NullRequestCache())
}