Skip to content

Commit 06943d2

Browse files
committed
Revert OAuth2LoginAuthenticationFilter should ignore authenticated requests
Issue #5915 Commit 93ca455 Fixes gh-6890
1 parent e8b7d6b commit 06943d2

File tree

2 files changed

+9
-41
lines changed

2 files changed

+9
-41
lines changed

config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurer.java

-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.springframework.security.core.Authentication;
2828
import org.springframework.security.core.AuthenticationException;
2929
import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
30-
import org.springframework.security.core.context.SecurityContextHolder;
3130
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
3231
import org.springframework.security.oauth2.client.authentication.OAuth2LoginAuthenticationProvider;
3332
import org.springframework.security.oauth2.client.authentication.OAuth2LoginAuthenticationToken;
@@ -432,9 +431,6 @@ public void init(B http) throws Exception {
432431
this.loginProcessingUrl);
433432
this.setAuthenticationFilter(authenticationFilter);
434433
super.loginProcessingUrl(this.loginProcessingUrl);
435-
RequestMatcher authenticationNullMatcher = request -> SecurityContextHolder.getContext().getAuthentication() == null;
436-
authenticationFilter.setRequiresAuthenticationRequestMatcher(new AndRequestMatcher(createLoginProcessingUrlMatcher(this.loginProcessingUrl),
437-
authenticationNullMatcher));
438434

439435
if (this.loginPage != null) {
440436
// Set custom login page

config/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurerTests.java

+9-37
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,11 @@
1515
*/
1616
package org.springframework.security.config.annotation.web.configurers.oauth2.client;
1717

18-
import java.time.Instant;
19-
import java.util.ArrayList;
20-
import java.util.Arrays;
21-
import java.util.Collections;
22-
import java.util.HashMap;
23-
import java.util.List;
24-
import java.util.Map;
25-
2618
import org.apache.http.HttpHeaders;
2719
import org.junit.After;
2820
import org.junit.Before;
2921
import org.junit.Rule;
3022
import org.junit.Test;
31-
3223
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
3324
import org.springframework.beans.factory.annotation.Autowired;
3425
import org.springframework.context.ApplicationListener;
@@ -39,7 +30,6 @@
3930
import org.springframework.mock.web.MockFilterChain;
4031
import org.springframework.mock.web.MockHttpServletRequest;
4132
import org.springframework.mock.web.MockHttpServletResponse;
42-
import org.springframework.security.authentication.TestingAuthenticationToken;
4333
import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
4434
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
4535
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@@ -51,12 +41,11 @@
5141
import org.springframework.security.core.authority.AuthorityUtils;
5242
import org.springframework.security.core.authority.SimpleGrantedAuthority;
5343
import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
54-
import org.springframework.security.core.context.SecurityContextImpl;
5544
import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken;
5645
import org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient;
5746
import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest;
58-
import org.springframework.security.oauth2.client.oidc.web.logout.OidcClientInitiatedLogoutSuccessHandler;
5947
import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest;
48+
import org.springframework.security.oauth2.client.oidc.web.logout.OidcClientInitiatedLogoutSuccessHandler;
6049
import org.springframework.security.oauth2.client.registration.ClientRegistration;
6150
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
6251
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
@@ -90,6 +79,14 @@
9079
import org.springframework.test.web.servlet.MockMvc;
9180
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
9281

82+
import java.time.Instant;
83+
import java.util.ArrayList;
84+
import java.util.Arrays;
85+
import java.util.Collections;
86+
import java.util.HashMap;
87+
import java.util.List;
88+
import java.util.Map;
89+
9390
import static org.assertj.core.api.Assertions.assertThat;
9491
import static org.assertj.core.api.Assertions.assertThatThrownBy;
9592
import static org.mockito.ArgumentMatchers.any;
@@ -203,31 +200,6 @@ public void oauth2LoginWhenSuccessThenAuthenticationSuccessEventPublished() thro
203200
assertThat(OAuth2LoginConfig.EVENTS.get(0)).isInstanceOf(AuthenticationSuccessEvent.class);
204201
}
205202

206-
@Test
207-
public void oauth2LoginWhenAuthenticatedThenIgnored() throws Exception {
208-
// setup application context
209-
loadConfig(OAuth2LoginConfig.class);
210-
211-
// authenticate
212-
TestingAuthenticationToken expectedAuthentication = new TestingAuthenticationToken("a",
213-
"b", "ROLE_TEST");
214-
215-
this.request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, new SecurityContextImpl(expectedAuthentication));
216-
217-
// setup authentication parameters
218-
this.request.setParameter("code", "code123");
219-
this.request.setParameter("state", "state");
220-
221-
// perform test
222-
this.springSecurityFilterChain.doFilter(this.request, this.response, this.filterChain);
223-
224-
// assertions
225-
Authentication authentication = this.securityContextRepository
226-
.loadContext(new HttpRequestResponseHolder(this.request, this.response))
227-
.getAuthentication();
228-
assertThat(authentication).isEqualTo(expectedAuthentication);
229-
}
230-
231203
@Test
232204
public void oauth2LoginCustomWithConfigurer() throws Exception {
233205
// setup application context

0 commit comments

Comments
 (0)