Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e4378b8

Browse files
authored
Merge pull request springfox#2639 from olOwOlo/optional-csrf-support
Make csrf support optional fixes springfox#2578
2 parents b10030b + d5a0eba commit e4378b8

5 files changed

Lines changed: 39 additions & 4 deletions

File tree

springfox-spring-config/src/main/java/springfox/springconfig/Swagger2SpringBoot.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ SecurityConfiguration security() {
140140
.scopeSeparator(",")
141141
.additionalQueryStringParams(null)
142142
.useBasicAuthenticationWithAccessCodeGrant(false)
143+
.enableCsrfSupport(false)
143144
.build();
144145
}
145146

springfox-swagger-common/src/main/java/springfox/documentation/swagger/web/SecurityConfiguration.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ public class SecurityConfiguration {
5959
private final String scopeSeparator;
6060
private final Map<String, Object> additionalQueryStringParams;
6161
private final Boolean useBasicAuthenticationWithAccessCodeGrant;
62+
/*--------------------------------------------*\
63+
* CSRF
64+
\*--------------------------------------------*/
65+
private final Boolean enableCsrfSupport;
6266

6367
/**
6468
* @deprecated @since 2.8.0. Use the {@link SecurityConfigurationBuilder} instead
@@ -102,6 +106,7 @@ public SecurityConfiguration(
102106

103107
this.additionalQueryStringParams = null;
104108
this.useBasicAuthenticationWithAccessCodeGrant = null;
109+
this.enableCsrfSupport = null;
105110
}
106111

107112
/**
@@ -121,6 +126,7 @@ public SecurityConfiguration(
121126
* Password using the HTTP Basic Authentication scheme (Authorization
122127
* header with Basic base64encoded[client_id:client_secret]). The
123128
* default is false.
129+
* @param enableCsrfSupport Enable csrf support, default is false.
124130
*/
125131
public SecurityConfiguration(
126132
String clientId,
@@ -129,14 +135,16 @@ public SecurityConfiguration(
129135
String appName,
130136
String scopeSeparator,
131137
Map<String, Object> additionalQueryStringParams,
132-
Boolean useBasicAuthenticationWithAccessCodeGrant) {
138+
Boolean useBasicAuthenticationWithAccessCodeGrant,
139+
Boolean enableCsrfSupport) {
133140
this.clientId = clientId;
134141
this.clientSecret = clientSecret;
135142
this.realm = realm;
136143
this.appName = appName;
137144
this.scopeSeparator = scopeSeparator;
138145
this.additionalQueryStringParams = additionalQueryStringParams;
139146
this.useBasicAuthenticationWithAccessCodeGrant = useBasicAuthenticationWithAccessCodeGrant;
147+
this.enableCsrfSupport = enableCsrfSupport;
140148
}
141149

142150
/**
@@ -206,4 +214,9 @@ public Map<String, Object> getAdditionalQueryStringParams() {
206214
public Boolean getUseBasicAuthenticationWithAccessCodeGrant() {
207215
return useBasicAuthenticationWithAccessCodeGrant;
208216
}
217+
218+
@JsonProperty("enableCsrfSupport")
219+
public Boolean getEnableCsrfSupport() {
220+
return enableCsrfSupport;
221+
}
209222
}

springfox-swagger-common/src/main/java/springfox/documentation/swagger/web/SecurityConfigurationBuilder.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public class SecurityConfigurationBuilder {
3434
private String scopeSeparator;
3535
private Map<String, Object> additionalQueryStringParams;
3636
private Boolean useBasicAuthenticationWithAccessCodeGrant;
37+
private Boolean enableCsrfSupport;
3738

3839
private SecurityConfigurationBuilder() {
3940
}
@@ -50,7 +51,8 @@ public SecurityConfiguration build() {
5051
defaultIfAbsent(appName, null),
5152
defaultIfAbsent(scopeSeparator, null),
5253
defaultIfAbsent(additionalQueryStringParams, null),
53-
defaultIfAbsent(useBasicAuthenticationWithAccessCodeGrant, null)
54+
defaultIfAbsent(useBasicAuthenticationWithAccessCodeGrant, null),
55+
defaultIfAbsent(enableCsrfSupport, null)
5456
);
5557
}
5658

@@ -122,4 +124,13 @@ public SecurityConfigurationBuilder useBasicAuthenticationWithAccessCodeGrant(
122124
this.useBasicAuthenticationWithAccessCodeGrant = useBasicAuthenticationWithAccessCodeGrant;
123125
return this;
124126
}
127+
128+
/**
129+
* @param enableCsrfSupport Try to find csrf token and add it to the header of all requests by patching the requestInterceptor.
130+
* @return this
131+
*/
132+
public SecurityConfigurationBuilder enableCsrfSupport(Boolean enableCsrfSupport) {
133+
this.enableCsrfSupport = enableCsrfSupport;
134+
return this;
135+
}
125136
}

springfox-swagger-common/src/test/groovy/springfox/documentation/swagger/web/ApiResourceControllerSpec.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ class ApiResourceControllerSpec extends Specification {
4343
"appName": "test",
4444
"scopeSeparator": ",",
4545
"additionalQueryStringParams": {"string":"value","boolean":true,"int":1},
46-
"useBasicAuthenticationWithAccessCodeGrant": false
46+
"useBasicAuthenticationWithAccessCodeGrant": false,
47+
"enableCsrfSupport": true
4748
}"""
4849
def ui = """{
4950
"apisSorter":"alpha",
@@ -93,6 +94,7 @@ class ApiResourceControllerSpec extends Specification {
9394
.scopeSeparator(",")
9495
.additionalQueryStringParams(['string': 'value', 'boolean': true, 'int': 1])
9596
.useBasicAuthenticationWithAccessCodeGrant(false)
97+
.enableCsrfSupport(true)
9698
.build()
9799
uiConfiguration = UiConfigurationBuilder.builder()
98100
.deepLinking(true)

springfox-swagger-ui/src/web/js/springfox.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ window.onload = () => {
107107
\*--------------------------------------------*/
108108
modelPropertyMacro: null,
109109
parameterMacro: null,
110+
/*--------------------------------------------*\
111+
* Custom configs
112+
\*--------------------------------------------*/
113+
custom: {
114+
enableCsrfSupport: configSecurity.enableCsrfSupport,
115+
},
110116
});
111117

112118
ui.initOAuth({
@@ -133,7 +139,9 @@ window.onload = () => {
133139
/* Entry Point */
134140
(async () => {
135141
await buildSystemAsync(getBaseURL());
136-
await csrfSupport(getBaseURL());
142+
if (window.ui.getConfigs().custom.enableCsrfSupport) {
143+
await csrfSupport(getBaseURL());
144+
}
137145
})();
138146

139147
};

0 commit comments

Comments
 (0)