Skip to content

Commit 13487be

Browse files
author
Steve Riesenberg
committed
Default to XorCsrfChannelInterceptor in 6.0.x
Closes gh-12378
1 parent 1363a4e commit 13487be

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/socket/WebSocketMessageBrokerSecurityConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import org.springframework.security.messaging.access.intercept.MessageMatcherDelegatingAuthorizationManager;
4242
import org.springframework.security.messaging.context.AuthenticationPrincipalArgumentResolver;
4343
import org.springframework.security.messaging.context.SecurityContextChannelInterceptor;
44-
import org.springframework.security.messaging.web.csrf.CsrfChannelInterceptor;
44+
import org.springframework.security.messaging.web.csrf.XorCsrfChannelInterceptor;
4545
import org.springframework.security.messaging.web.socket.server.CsrfTokenHandshakeInterceptor;
4646
import org.springframework.util.Assert;
4747
import org.springframework.web.servlet.handler.SimpleUrlHandlerMapping;
@@ -71,7 +71,7 @@ final class WebSocketMessageBrokerSecurityConfiguration
7171

7272
private final SecurityContextChannelInterceptor securityContextChannelInterceptor = new SecurityContextChannelInterceptor();
7373

74-
private ChannelInterceptor csrfChannelInterceptor = new CsrfChannelInterceptor();
74+
private ChannelInterceptor csrfChannelInterceptor = new XorCsrfChannelInterceptor();
7575

7676
private AuthorizationManager<Message<?>> authorizationManager = ANY_MESSAGE_AUTHENTICATED;
7777

config/src/test/java/org/springframework/security/config/annotation/web/socket/WebSocketMessageBrokerSecurityConfigurationTests.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666
import org.springframework.security.messaging.access.intercept.MessageAuthorizationContext;
6767
import org.springframework.security.messaging.access.intercept.MessageMatcherDelegatingAuthorizationManager;
6868
import org.springframework.security.messaging.context.SecurityContextChannelInterceptor;
69-
import org.springframework.security.messaging.web.csrf.CsrfChannelInterceptor;
69+
import org.springframework.security.messaging.web.csrf.XorCsrfChannelInterceptor;
7070
import org.springframework.security.web.csrf.CsrfToken;
7171
import org.springframework.security.web.csrf.DefaultCsrfToken;
7272
import org.springframework.security.web.csrf.DeferredCsrfToken;
@@ -96,6 +96,8 @@
9696

9797
public class WebSocketMessageBrokerSecurityConfigurationTests {
9898

99+
private static final String XOR_CSRF_TOKEN_VALUE = "wpe7zB62-NCpcA==";
100+
99101
AnnotationConfigWebApplicationContext context;
100102

101103
Authentication messageUser;
@@ -198,7 +200,7 @@ public void csrfProtectionDefinedByBean() {
198200
MessageChannel messageChannel = clientInboundChannel();
199201
Stream<Class<? extends ChannelInterceptor>> interceptors = ((AbstractMessageChannel) messageChannel)
200202
.getInterceptors().stream().map(ChannelInterceptor::getClass);
201-
assertThat(interceptors).contains(CsrfChannelInterceptor.class);
203+
assertThat(interceptors).contains(XorCsrfChannelInterceptor.class);
202204
}
203205

204206
@Test
@@ -238,7 +240,7 @@ public void messagesConnectWebSocketUseCsrfTokenHandshakeInterceptor() throws Ex
238240
public void messagesContextWebSocketUseSecurityContextHolderStrategy() {
239241
loadConfig(WebSocketSecurityConfig.class, SecurityContextChangedListenerConfig.class);
240242
SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.create(SimpMessageType.CONNECT);
241-
headers.setNativeHeader(this.token.getHeaderName(), this.token.getToken());
243+
headers.setNativeHeader(this.token.getHeaderName(), XOR_CSRF_TOKEN_VALUE);
242244
Message<?> message = message(headers, "/authenticated");
243245
headers.getSessionAttributes().put(CsrfToken.class.getName(), this.token);
244246
MessageChannel messageChannel = clientInboundChannel();

0 commit comments

Comments
 (0)