|
@@ -21,6 +21,7 @@ import java.io.IOException;
|
|
|
import java.io.OutputStream;
|
|
|
import java.security.AccessController;
|
|
|
import java.security.Principal;
|
|
|
+import java.security.cert.X509Certificate;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collection;
|
|
|
import java.util.HashSet;
|
|
@@ -91,6 +92,7 @@ import org.springframework.security.web.authentication.AnonymousAuthenticationFi
|
|
|
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
|
|
|
import org.springframework.security.web.authentication.logout.LogoutFilter;
|
|
|
import org.springframework.security.web.authentication.preauth.x509.X509AuthenticationFilter;
|
|
|
+import org.springframework.security.web.authentication.preauth.x509.X509TestUtils;
|
|
|
import org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter;
|
|
|
import org.springframework.security.web.authentication.ui.DefaultLogoutPageGeneratingFilter;
|
|
|
import org.springframework.security.web.authentication.ui.DefaultResourcesFilter;
|
|
@@ -398,6 +400,27 @@ public class MiscHttpConfigTests {
|
|
|
.containsSubsequence(CsrfFilter.class, X509AuthenticationFilter.class, ExceptionTranslationFilter.class);
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void getWhenUsingX509PrincipalExtractorRef() throws Exception {
|
|
|
+ this.spring.configLocations(xml("X509PrincipalExtractorRef")).autowire();
|
|
|
+ X509Certificate certificate = X509TestUtils.buildTestCertificate();
|
|
|
+ RequestPostProcessor x509 = x509(certificate);
|
|
|
+ // @formatter:off
|
|
|
+ this.mvc.perform(get("/protected").with(x509))
|
|
|
+ .andExpect(status().isOk());
|
|
|
+ // @formatter:on
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void getWhenUsingX509PrincipalExtractorRefAndSubjectPrincipalRegex() throws Exception {
|
|
|
+ String xmlResourceName = "X509PrincipalExtractorRefAndSubjectPrincipalRegex";
|
|
|
+ // @formatter:off
|
|
|
+ assertThatExceptionOfType(BeanDefinitionParsingException.class)
|
|
|
+ .isThrownBy(() -> this.spring.configLocations(xml(xmlResourceName)).autowire())
|
|
|
+ .withMessage("Configuration problem: The attribute 'principal-extractor-ref' cannot be used together with the 'subject-principal-regex' attribute within <x509>\n" + "Offending resource: class path resource [org/springframework/security/config/http/MiscHttpConfigTests-X509PrincipalExtractorRefAndSubjectPrincipalRegex.xml]");
|
|
|
+ // @formatter:on
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void getWhenUsingX509AndPropertyPlaceholderThenSubjectPrincipalRegexIsConfigured() throws Exception {
|
|
|
System.setProperty("subject_principal_regex", "OU=(.*?)(?:,|$)");
|