Skip to content
This repository was archived by the owner on Dec 19, 2023. It is now read-only.

Commit 84a0a4d

Browse files
committed
feat: disable websocket csrf by default
fixes #943
1 parent e054af0 commit 84a0a4d

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/web/servlet/GraphQLSubscriptionWebsocketProperties.java

+7
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,11 @@ class GraphQLSubscriptionWebsocketProperties {
1212

1313
private String path = "/subscriptions";
1414
private List<String> allowedOrigins = emptyList();
15+
private CsrfProperties csrf = new CsrfProperties();
16+
17+
@Data
18+
class CsrfProperties {
19+
20+
private boolean enabled = false;
21+
}
1522
}

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/web/servlet/GraphQLWebsocketAutoConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ private Optional<SubscriptionConnectionListener> keepAliveListener() {
8282
@Bean
8383
public WsCsrfFilter wsCsrfFilter(
8484
@Autowired(required = false) WsCsrfTokenRepository csrfTokenRepository) {
85-
return new WsCsrfFilter(csrfTokenRepository);
85+
return new WsCsrfFilter(websocketProperties.getCsrf(), csrfTokenRepository);
8686
}
8787

8888
@Bean

graphql-spring-boot-autoconfigure/src/main/java/graphql/kickstart/autoconfigure/web/servlet/WsCsrfFilter.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
import static org.springframework.util.CollectionUtils.firstElement;
44

5+
import graphql.kickstart.autoconfigure.web.servlet.GraphQLSubscriptionWebsocketProperties.CsrfProperties;
56
import jakarta.websocket.server.HandshakeRequest;
67
import java.util.Objects;
78
import lombok.RequiredArgsConstructor;
89

910
@RequiredArgsConstructor
1011
class WsCsrfFilter {
1112

13+
private final CsrfProperties csrfProperties;
1214
private final WsCsrfTokenRepository tokenRepository;
1315

1416
void doFilter(HandshakeRequest request) {
15-
if (tokenRepository != null) {
17+
if (csrfProperties.isEnabled() && tokenRepository != null) {
1618
WsCsrfToken csrfToken = tokenRepository.loadToken(request);
1719
boolean missingToken = csrfToken == null;
1820
if (missingToken) {

0 commit comments

Comments
 (0)