Skip to content

Commit 29c0090

Browse files
committed
Merge branch '5.7.x' into 5.8.x
Closes gh-12324
2 parents 68a344d + 667cab6 commit 29c0090

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,8 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
201201
if (authorizationRequest == null) {
202202
throw authzEx;
203203
}
204-
this.sendRedirectForAuthorization(request, response, authorizationRequest);
205204
this.requestCache.saveRequest(request, response);
205+
this.sendRedirectForAuthorization(request, response, authorizationRequest);
206206
}
207207
catch (Exception failed) {
208208
this.unsuccessfulRedirectForAuthorization(request, response, failed);

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
5353
import static org.mockito.ArgumentMatchers.any;
5454
import static org.mockito.BDDMockito.given;
55+
import static org.mockito.BDDMockito.willAnswer;
5556
import static org.mockito.BDDMockito.willThrow;
5657
import static org.mockito.Mockito.mock;
5758
import static org.mockito.Mockito.times;
@@ -369,4 +370,22 @@ public void doFilterWhenCustomAuthorizationRedirectStrategySetThenCustomAuthoriz
369370
+ "redirect_uri=http://localhost/login/oauth2/code/registration-id");
370371
}
371372

373+
// gh-11602
374+
375+
@Test
376+
public void doFilterWhenNotAuthorizationRequestAndClientAuthorizationRequiredExceptionThrownThenSaveRequestBeforeCommitted()
377+
throws Exception {
378+
String requestUri = "/path";
379+
MockHttpServletRequest request = new MockHttpServletRequest("GET", requestUri);
380+
request.setServletPath(requestUri);
381+
MockHttpServletResponse response = new MockHttpServletResponse();
382+
FilterChain filterChain = mock(FilterChain.class);
383+
willAnswer((invocation) -> assertThat((invocation.<HttpServletResponse>getArgument(1)).isCommitted()).isFalse())
384+
.given(this.requestCache).saveRequest(any(HttpServletRequest.class), any(HttpServletResponse.class));
385+
willThrow(new ClientAuthorizationRequiredException(this.registration1.getRegistrationId())).given(filterChain)
386+
.doFilter(any(ServletRequest.class), any(ServletResponse.class));
387+
this.filter.doFilter(request, response, filterChain);
388+
assertThat(response.isCommitted()).isTrue();
389+
}
390+
372391
}

0 commit comments

Comments
 (0)