Skip to content

Commit 70a6cf6

Browse files
committed
Merge branch '6.0.x'
Closes gh-12326
2 parents 6cbbf06 + b22bc42 commit 70a6cf6

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

oauth2/oauth2-client/src/main/java/org/springframework/security/oauth2/client/web/OAuth2AuthorizationRequestRedirectFilter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,8 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
195195
if (authorizationRequest == null) {
196196
throw authzEx;
197197
}
198-
this.sendRedirectForAuthorization(request, response, authorizationRequest);
199198
this.requestCache.saveRequest(request, response);
199+
this.sendRedirectForAuthorization(request, response, authorizationRequest);
200200
}
201201
catch (Exception failed) {
202202
this.unsuccessfulRedirectForAuthorization(request, response, failed);

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/web/OAuth2AuthorizationRequestRedirectFilterTests.java

+19
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
5151
import static org.mockito.ArgumentMatchers.any;
5252
import static org.mockito.BDDMockito.given;
53+
import static org.mockito.BDDMockito.willAnswer;
5354
import static org.mockito.BDDMockito.willThrow;
5455
import static org.mockito.Mockito.mock;
5556
import static org.mockito.Mockito.verify;
@@ -325,4 +326,22 @@ public void doFilterWhenCustomAuthorizationRedirectStrategySetThenCustomAuthoriz
325326
+ "redirect_uri=http://localhost/login/oauth2/code/registration-id");
326327
}
327328

329+
// gh-11602
330+
331+
@Test
332+
public void doFilterWhenNotAuthorizationRequestAndClientAuthorizationRequiredExceptionThrownThenSaveRequestBeforeCommitted()
333+
throws Exception {
334+
String requestUri = "/path";
335+
MockHttpServletRequest request = new MockHttpServletRequest("GET", requestUri);
336+
request.setServletPath(requestUri);
337+
MockHttpServletResponse response = new MockHttpServletResponse();
338+
FilterChain filterChain = mock(FilterChain.class);
339+
willAnswer((invocation) -> assertThat((invocation.<HttpServletResponse>getArgument(1)).isCommitted()).isFalse())
340+
.given(this.requestCache).saveRequest(any(HttpServletRequest.class), any(HttpServletResponse.class));
341+
willThrow(new ClientAuthorizationRequiredException(this.registration1.getRegistrationId())).given(filterChain)
342+
.doFilter(any(ServletRequest.class), any(ServletResponse.class));
343+
this.filter.doFilter(request, response, filterChain);
344+
assertThat(response.isCommitted()).isTrue();
345+
}
346+
328347
}

0 commit comments

Comments
 (0)