1
0
mirror of synced 2026-08-04 01:07:02 +00:00

Default login page supports Iterable<ClientRegistration>

Fixes gh-4596
This commit is contained in:
Joe Grandja
2017-09-29 18:17:14 -04:00
parent 99f06ca58c
commit 66647070ab
5 changed files with 30 additions and 65 deletions
@@ -39,7 +39,6 @@ import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.client.authentication.AuthorizationCodeAuthenticationToken;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
import org.springframework.security.oauth2.client.user.OAuth2UserService;
import org.springframework.security.oauth2.client.web.AuthorizationCodeAuthenticationProcessingFilter;
import org.springframework.security.oauth2.client.web.AuthorizationCodeRequestRedirectFilter;
@@ -58,7 +57,6 @@ import org.springframework.web.util.UriComponentsBuilder;
import java.net.URI;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -91,8 +89,6 @@ public class OAuth2LoginApplicationTests {
private WebClient webClient;
@Autowired
private ClientRegistration[] clientRegistrations;
private ClientRegistrationRepository clientRegistrationRepository;
private ClientRegistration googleClientRegistration;
@@ -103,7 +99,6 @@ public class OAuth2LoginApplicationTests {
@Before
public void setup() {
this.webClient.getCookieManager().clearCookies();
this.clientRegistrationRepository = new InMemoryClientRegistrationRepository(Arrays.asList(this.clientRegistrations));
this.googleClientRegistration = this.clientRegistrationRepository.findByRegistrationId("google");
this.githubClientRegistration = this.clientRegistrationRepository.findByRegistrationId("github");
this.facebookClientRegistration = this.clientRegistrationRepository.findByRegistrationId("facebook");
@@ -40,6 +40,8 @@ import org.springframework.core.io.ClassPathResource;
import org.springframework.core.type.AnnotatedTypeMetadata;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationProperties;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
@@ -54,8 +56,8 @@ import java.util.stream.Collectors;
*/
@Configuration
@ConditionalOnWebApplication
@ConditionalOnClass(ClientRegistration.class)
@ConditionalOnMissingBean(ClientRegistration.class)
@ConditionalOnClass(ClientRegistrationRepository.class)
@ConditionalOnMissingBean(ClientRegistrationRepository.class)
@AutoConfigureBefore(SecurityAutoConfiguration.class)
public class ClientRegistrationAutoConfiguration {
private static final String CLIENTS_DEFAULTS_RESOURCE = "META-INF/oauth2-clients-defaults.yml";
@@ -72,7 +74,7 @@ public class ClientRegistrationAutoConfiguration {
}
@Bean
public ClientRegistration[] clientRegistrations() {
public ClientRegistrationRepository clientRegistrations() {
MutablePropertySources propertySources = ((ConfigurableEnvironment) this.environment).getPropertySources();
Properties clientsDefaultProperties = this.getClientsDefaultProperties();
if (clientsDefaultProperties != null) {
@@ -93,7 +95,7 @@ public class ClientRegistrationAutoConfiguration {
clientRegistrations.add(clientRegistration);
}
return clientRegistrations.toArray(new ClientRegistration[0]);
return new InMemoryClientRegistrationRepository(clientRegistrations);
}
private Properties getClientsDefaultProperties() {
@@ -27,7 +27,7 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.oauth2.client.registration.ClientRegistration;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
/**
* @author Joe Grandja
@@ -36,7 +36,7 @@ import org.springframework.security.oauth2.client.registration.ClientRegistratio
@ConditionalOnWebApplication
@ConditionalOnClass(EnableWebSecurity.class)
@ConditionalOnMissingBean(WebSecurityConfiguration.class)
@ConditionalOnBean(ClientRegistration[].class)
@ConditionalOnBean(ClientRegistrationRepository.class)
@AutoConfigureBefore(SecurityAutoConfiguration.class)
@AutoConfigureAfter(ClientRegistrationAutoConfiguration.class)
public class OAuth2LoginAutoConfiguration {