From ddf87b54f7482dcb88c4507c0c54cc1402d635f2 Mon Sep 17 00:00:00 2001 From: Joe Grandja Date: Sat, 28 Oct 2017 17:48:45 -0400 Subject: [PATCH] Polish OAuth2LoginConfigurer Fixes gh-4731 --- .../oauth2/client/OAuth2LoginConfigurer.java | 28 +++++-------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurer.java b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurer.java index 152672d40d..c0c27e4644 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurer.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OAuth2LoginConfigurer.java @@ -15,20 +15,18 @@ */ package org.springframework.security.config.annotation.web.configurers.oauth2.client; -import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.context.ApplicationContext; import org.springframework.core.ResolvableType; import org.springframework.security.config.annotation.web.HttpSecurityBuilder; import org.springframework.security.config.annotation.web.configurers.AbstractAuthenticationFilterConfigurer; import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper; -import org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService; import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService; +import org.springframework.security.oauth2.client.authentication.OAuth2LoginAuthenticationProvider; import org.springframework.security.oauth2.client.endpoint.AuthorizationGrantTokenExchanger; +import org.springframework.security.oauth2.client.endpoint.AuthorizationRequestUriBuilder; import org.springframework.security.oauth2.client.endpoint.NimbusAuthorizationCodeTokenExchanger; import org.springframework.security.oauth2.client.endpoint.OAuth2AuthorizationCodeGrantRequest; -import org.springframework.security.oauth2.client.authentication.OAuth2LoginAuthenticationProvider; -import org.springframework.security.oauth2.client.endpoint.AuthorizationRequestUriBuilder; import org.springframework.security.oauth2.client.jwt.JwtDecoderRegistry; import org.springframework.security.oauth2.client.jwt.NimbusJwtDecoderRegistry; import org.springframework.security.oauth2.client.oidc.authentication.OidcAuthorizationCodeAuthenticationProvider; @@ -36,7 +34,6 @@ import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserRequest; import org.springframework.security.oauth2.client.oidc.userinfo.OidcUserService; 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.token.OAuth2TokenRepository; import org.springframework.security.oauth2.client.userinfo.CustomUserTypesOAuth2UserService; import org.springframework.security.oauth2.client.userinfo.DefaultOAuth2UserService; @@ -56,7 +53,6 @@ import org.springframework.security.web.util.matcher.RequestMatcher; import org.springframework.util.Assert; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -81,11 +77,6 @@ public final class OAuth2LoginConfigurer> exten OAuth2LoginAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI); } - public OAuth2LoginConfigurer clients(ClientRegistration... clientRegistrations) { - Assert.notEmpty(clientRegistrations, "clientRegistrations cannot be empty"); - return this.clients(new InMemoryClientRegistrationRepository(Arrays.asList(clientRegistrations))); - } - public OAuth2LoginConfigurer clients(ClientRegistrationRepository clientRegistrationRepository) { Assert.notNull(clientRegistrationRepository, "clientRegistrationRepository cannot be null"); this.getBuilder().setSharedObject(ClientRegistrationRepository.class, clientRegistrationRepository); @@ -323,7 +314,8 @@ public final class OAuth2LoginConfigurer> exten } private ClientRegistrationRepository getClientRegistrationRepository() { - ClientRegistrationRepository clientRegistrationRepository = this.getBuilder().getSharedObject(ClientRegistrationRepository.class); + ClientRegistrationRepository clientRegistrationRepository = + this.getBuilder().getSharedObject(ClientRegistrationRepository.class); if (clientRegistrationRepository == null) { clientRegistrationRepository = this.getClientRegistrationRepositoryBean(); this.getBuilder().setSharedObject(ClientRegistrationRepository.class, clientRegistrationRepository); @@ -336,23 +328,17 @@ public final class OAuth2LoginConfigurer> exten } private OAuth2AuthorizedClientService getAuthorizedClientService() { - OAuth2AuthorizedClientService authorizedClientService = this.getBuilder().getSharedObject(OAuth2AuthorizedClientService.class); + OAuth2AuthorizedClientService authorizedClientService = + this.getBuilder().getSharedObject(OAuth2AuthorizedClientService.class); if (authorizedClientService == null) { authorizedClientService = this.getAuthorizedClientServiceBean(); - if (authorizedClientService == null) { - authorizedClientService = new InMemoryOAuth2AuthorizedClientService<>(this.getClientRegistrationRepository()); - } this.getBuilder().setSharedObject(OAuth2AuthorizedClientService.class, authorizedClientService); } return authorizedClientService; } private OAuth2AuthorizedClientService getAuthorizedClientServiceBean() { - Map authorizedClientServiceMap = - BeanFactoryUtils.beansOfTypeIncludingAncestors( - this.getBuilder().getSharedObject(ApplicationContext.class), - OAuth2AuthorizedClientService.class); - return !authorizedClientServiceMap.isEmpty() ? authorizedClientServiceMap.values().iterator().next() : null; + return this.getBuilder().getSharedObject(ApplicationContext.class).getBean(OAuth2AuthorizedClientService.class); } private void initDefaultLoginFilter(B http) {