Merge remote-tracking branch 'origin/6.3.x'
This commit is contained in:
		
						commit
						315aafd464
					
				| 
						 | 
				
			
			@ -16,8 +16,7 @@
 | 
			
		|||
 | 
			
		||||
package org.springframework.security.config.annotation.authentication.configuration;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
 | 
			
		||||
import org.apache.commons.logging.Log;
 | 
			
		||||
import org.apache.commons.logging.LogFactory;
 | 
			
		||||
| 
						 | 
				
			
			@ -63,62 +62,24 @@ class InitializeAuthenticationProviderBeanManagerConfigurer extends GlobalAuthen
 | 
			
		|||
			if (auth.isConfigured()) {
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			List<BeanWithName<AuthenticationProvider>> authenticationProviders = getBeansWithName(
 | 
			
		||||
					AuthenticationProvider.class);
 | 
			
		||||
			if (authenticationProviders.isEmpty()) {
 | 
			
		||||
			String[] beanNames = InitializeAuthenticationProviderBeanManagerConfigurer.this.context
 | 
			
		||||
				.getBeanNamesForType(AuthenticationProvider.class);
 | 
			
		||||
			if (beanNames.length == 0) {
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			else if (authenticationProviders.size() > 1) {
 | 
			
		||||
				List<String> beanNames = authenticationProviders.stream().map(BeanWithName::getName).toList();
 | 
			
		||||
			else if (beanNames.length > 1) {
 | 
			
		||||
				this.logger.info(LogMessage.format("Found %s AuthenticationProvider beans, with names %s. "
 | 
			
		||||
						+ "Global Authentication Manager will not be configured with AuthenticationProviders. "
 | 
			
		||||
						+ "Consider publishing a single AuthenticationProvider bean, or wiring your Providers directly "
 | 
			
		||||
						+ "using the DSL.", authenticationProviders.size(), beanNames));
 | 
			
		||||
						+ "using the DSL.", beanNames.length, Arrays.toString(beanNames)));
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			AuthenticationProvider authenticationProvider = authenticationProviders.get(0).getBean();
 | 
			
		||||
			String authenticationProviderBeanName = authenticationProviders.get(0).getName();
 | 
			
		||||
 | 
			
		||||
			AuthenticationProvider authenticationProvider = InitializeAuthenticationProviderBeanManagerConfigurer.this.context
 | 
			
		||||
				.getBean(beanNames[0], AuthenticationProvider.class);
 | 
			
		||||
			auth.authenticationProvider(authenticationProvider);
 | 
			
		||||
			this.logger.info(LogMessage.format(
 | 
			
		||||
					"Global AuthenticationManager configured with AuthenticationProvider bean with name %s",
 | 
			
		||||
					authenticationProviderBeanName));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * @return a list of beans of the requested class, along with their names. If
 | 
			
		||||
		 * there are no registered beans of that type, the list is empty.
 | 
			
		||||
		 */
 | 
			
		||||
		private <T> List<BeanWithName<T>> getBeansWithName(Class<T> type) {
 | 
			
		||||
			List<BeanWithName<T>> beanWithNames = new ArrayList<>();
 | 
			
		||||
			String[] beanNames = InitializeAuthenticationProviderBeanManagerConfigurer.this.context
 | 
			
		||||
				.getBeanNamesForType(type);
 | 
			
		||||
			for (String beanName : beanNames) {
 | 
			
		||||
				T bean = InitializeAuthenticationProviderBeanManagerConfigurer.this.context.getBean(beanName, type);
 | 
			
		||||
				beanWithNames.add(new BeanWithName<>(bean, beanName));
 | 
			
		||||
			}
 | 
			
		||||
			return beanWithNames;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		static class BeanWithName<T> {
 | 
			
		||||
 | 
			
		||||
			private final T bean;
 | 
			
		||||
 | 
			
		||||
			private final String name;
 | 
			
		||||
 | 
			
		||||
			BeanWithName(T bean, String name) {
 | 
			
		||||
				this.bean = bean;
 | 
			
		||||
				this.name = name;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			T getBean() {
 | 
			
		||||
				return this.bean;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			String getName() {
 | 
			
		||||
				return this.name;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
					beanNames[0]));
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue