Skip to content

Commit f73f253

Browse files
committed
Add Switch for Processing GET Requests
Issue gh-17099
1 parent 32c7e8a commit f73f253

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

saml2/saml2-service-provider/src/main/java/org/springframework/security/saml2/provider/service/web/BaseOpenSamlAuthenticationTokenConverter.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ final class BaseOpenSamlAuthenticationTokenConverter implements AuthenticationCo
5151

5252
private Saml2AuthenticationRequestRepository<?> authenticationRequests = new HttpSessionSaml2AuthenticationRequestRepository();
5353

54+
private boolean shouldConvertGetRequests = true;
55+
5456
/**
5557
* Constructs a {@link BaseOpenSamlAuthenticationTokenConverter} given a repository
5658
* for {@link RelyingPartyRegistration}s
@@ -172,13 +174,19 @@ void setRequestMatcher(RequestMatcher requestMatcher) {
172174
this.requestMatcher = requestMatcher;
173175
}
174176

177+
void setShouldConvertGetRequests(boolean shouldConvertGetRequests) {
178+
this.shouldConvertGetRequests = shouldConvertGetRequests;
179+
}
180+
175181
private String decode(HttpServletRequest request) {
176182
String encoded = request.getParameter(Saml2ParameterNames.SAML_RESPONSE);
183+
boolean isGet = HttpMethod.GET.matches(request.getMethod());
184+
if (!this.shouldConvertGetRequests && isGet) {
185+
return null;
186+
}
187+
Saml2Utils.DecodingConfigurer decoding = Saml2Utils.withEncoded(encoded).requireBase64(true).inflate(isGet);
177188
try {
178-
return Saml2Utils.withEncoded(encoded)
179-
.requireBase64(true)
180-
.inflate(HttpMethod.GET.matches(request.getMethod()))
181-
.decode();
189+
return decoding.decode();
182190
}
183191
catch (Exception ex) {
184192
throw new Saml2AuthenticationException(Saml2Error.invalidResponse(ex.getMessage()), ex);

saml2/saml2-service-provider/src/opensaml4Main/java/org/springframework/security/saml2/provider/service/web/OpenSaml4AuthenticationTokenConverter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,14 @@ public void setRequestMatcher(RequestMatcher requestMatcher) {
101101
this.delegate.setRequestMatcher(requestMatcher);
102102
}
103103

104+
/**
105+
* Use the given {@code shouldConvertGetRequests} to convert {@code GET} requests.
106+
* Default is {@code true}.
107+
* @param shouldConvertGetRequests the {@code shouldConvertGetRequests} to use
108+
* @since 7.0
109+
*/
110+
public void setShouldConvertGetRequests(boolean shouldConvertGetRequests) {
111+
this.delegate.setShouldConvertGetRequests(shouldConvertGetRequests);
112+
}
113+
104114
}

saml2/saml2-service-provider/src/opensaml5Main/java/org/springframework/security/saml2/provider/service/web/OpenSaml5AuthenticationTokenConverter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,14 @@ public void setRequestMatcher(RequestMatcher requestMatcher) {
101101
this.delegate.setRequestMatcher(requestMatcher);
102102
}
103103

104+
/**
105+
* Use the given {@code shouldConvertGetRequests} to convert {@code GET} requests.
106+
* Default is {@code true}.
107+
* @param shouldConvertGetRequests the {@code shouldConvertGetRequests} to use
108+
* @since 7.0
109+
*/
110+
public void setShouldConvertGetRequests(boolean shouldConvertGetRequests) {
111+
this.delegate.setShouldConvertGetRequests(shouldConvertGetRequests);
112+
}
113+
104114
}

0 commit comments

Comments
 (0)