diff --git a/core/src/main/java/org/springframework/security/authentication/ProviderManager.java b/core/src/main/java/org/springframework/security/authentication/ProviderManager.java index ee487d472b..8c2f3a72b7 100644 --- a/core/src/main/java/org/springframework/security/authentication/ProviderManager.java +++ b/core/src/main/java/org/springframework/security/authentication/ProviderManager.java @@ -15,6 +15,7 @@ */ package org.springframework.security.authentication; +import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -104,6 +105,10 @@ public class ProviderManager implements AuthenticationManager, MessageSourceAwar this(providers, null); } + public ProviderManager(AuthenticationProvider... providers) { + this(Arrays.asList(providers), null); + } + public ProviderManager(List providers, AuthenticationManager parent) { Assert.notNull(providers, "providers list cannot be null"); @@ -124,6 +129,9 @@ public class ProviderManager implements AuthenticationManager, MessageSourceAwar throw new IllegalArgumentException( "A parent AuthenticationManager or a list " + "of AuthenticationProviders is required"); + } else if (providers.contains(null)) { + throw new IllegalArgumentException( + "providers list cannot contain null values"); } } diff --git a/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java b/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java index d15a84915b..bb88187069 100644 --- a/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java +++ b/core/src/test/java/org/springframework/security/authentication/ProviderManagerTests.java @@ -95,8 +95,13 @@ public class ProviderManagerTests { } @Test(expected = IllegalArgumentException.class) - public void testStartupFailsIfProvidersNotSet() { - new ProviderManager(null); + public void testStartupFailsIfProvidersNotSetAsList() { + new ProviderManager((List) null); + } + + @Test(expected = IllegalArgumentException.class) + public void testStartupFailsIfProvidersNotSetAsVarargs() { + new ProviderManager((AuthenticationProvider) null); } @Test