diff --git a/config/src/main/java/org/springframework/security/config/annotation/authentication/configuration/InitializeAuthenticationProviderBeanManagerConfigurer.java b/config/src/main/java/org/springframework/security/config/annotation/authentication/configuration/InitializeAuthenticationProviderBeanManagerConfigurer.java index 82bd70469f..09134da377 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/authentication/configuration/InitializeAuthenticationProviderBeanManagerConfigurer.java +++ b/config/src/main/java/org/springframework/security/config/annotation/authentication/configuration/InitializeAuthenticationProviderBeanManagerConfigurer.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2024 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -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> 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 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 List> getBeansWithName(Class type) { - List> 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 { - - 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])); } }