Skip to content

Commit 32acb04

Browse files
committed
Fix SAML 2.0 Javaconfig Sample
Issue gh-9362
1 parent 57dfbee commit 32acb04

File tree

5 files changed

+27
-13
lines changed

5 files changed

+27
-13
lines changed

samples/javaconfig/saml2login/spring-security-samples-javaconfig-saml2-login.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ dependencies {
55
compile project(':spring-security-config')
66
compile "org.bouncycastle:bcprov-jdk15on"
77
compile "org.bouncycastle:bcpkix-jdk15on"
8+
compile slf4jDependencies
89

910
testCompile project(':spring-security-test')
1011
}

samples/javaconfig/saml2login/src/main/java/org/springframework/security/samples/config/MessageSecurityWebApplicationInitializer.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727
public class MessageSecurityWebApplicationInitializer extends
2828
AbstractSecurityWebApplicationInitializer {
2929

30+
public MessageSecurityWebApplicationInitializer() {
31+
super(SecurityConfig.class);
32+
}
33+
3034
@Override
3135
protected boolean enableHttpSessionEventPublisher() {
3236
return true;

samples/javaconfig/saml2login/src/main/java/org/springframework/security/samples/config/SecurityConfig.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.springframework.security.samples.config;
1717

18+
19+
import org.springframework.context.annotation.Bean;
1820
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
1921
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
2022
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@@ -23,6 +25,7 @@
2325
import org.springframework.security.saml2.credentials.Saml2X509Credential;
2426
import org.springframework.security.saml2.provider.service.registration.InMemoryRelyingPartyRegistrationRepository;
2527
import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistration;
28+
import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistrationRepository;
2629
import org.springframework.security.saml2.provider.service.servlet.filter.Saml2WebSsoAuthenticationFilter;
2730

2831
import java.io.ByteArrayInputStream;
@@ -39,7 +42,8 @@
3942
@EnableGlobalMethodSecurity(prePostEnabled = true)
4043
public class SecurityConfig extends WebSecurityConfigurerAdapter {
4144

42-
RelyingPartyRegistration getSaml2AuthenticationConfiguration() throws Exception {
45+
@Bean
46+
RelyingPartyRegistrationRepository getSaml2AuthenticationConfiguration() throws Exception {
4347
//remote IDP entity ID
4448
String idpEntityId = "https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/metadata.php";
4549
//remote WebSSO Endpoint - Where to Send AuthNRequests to
@@ -53,14 +57,14 @@ RelyingPartyRegistration getSaml2AuthenticationConfiguration() throws Exception
5357
//IDP certificate for verification of incoming messages
5458
Saml2X509Credential idpVerificationCertificate = getVerificationCertificate();
5559
String acsUrlTemplate = "{baseUrl}" + Saml2WebSsoAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI;
56-
return RelyingPartyRegistration.withRegistrationId(registrationId)
60+
return new InMemoryRelyingPartyRegistrationRepository(RelyingPartyRegistration.withRegistrationId(registrationId)
5761
.remoteIdpEntityId(idpEntityId)
5862
.idpWebSsoUrl(webSsoEndpoint)
5963
.credentials(c -> c.add(signingCredential))
6064
.credentials(c -> c.add(idpVerificationCertificate))
6165
.localEntityIdTemplate(localEntityIdTemplate)
6266
.assertionConsumerServiceUrlTemplate(acsUrlTemplate)
63-
.build();
67+
.build());
6468
}
6569

6670
@Override
@@ -70,14 +74,7 @@ protected void configure(HttpSecurity http) throws Exception {
7074
.authorizeRequests()
7175
.anyRequest().authenticated()
7276
.and()
73-
.saml2Login()
74-
.relyingPartyRegistrationRepository(
75-
new InMemoryRelyingPartyRegistrationRepository(
76-
getSaml2AuthenticationConfiguration()
77-
)
78-
)
79-
.loginProcessingUrl("/sample/jc/saml2/sso/{registrationId}")
80-
;
77+
.saml2Login();
8178
// @formatter:on
8279
}
8380

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<configuration>
2+
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
3+
<encoder>
4+
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
5+
</encoder>
6+
</appender>
7+
8+
<root level="WARN">
9+
<appender-ref ref="STDOUT" />
10+
</root>
11+
12+
</configuration>

samples/javaconfig/saml2login/src/test/java/org/springframework/security/samples/config/SecurityConfigTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void securityConfigurationLoads() {
4444
public void filterWhenLoginProcessingUrlIsSetInJavaConfigThenTheFilterHasIt() {
4545
FilterChainProxy filterChain = context.getBean(FilterChainProxy.class);
4646
Assert.assertNotNull(filterChain);
47-
final List<Filter> filters = filterChain.getFilters("/sample/jc/saml2/sso/test-id");
47+
final List<Filter> filters = filterChain.getFilters("/login/saml2/sso/one");
4848
Assert.assertNotNull(filters);
4949
Saml2WebSsoAuthenticationFilter filter = (Saml2WebSsoAuthenticationFilter) filters
5050
.stream()
@@ -55,6 +55,6 @@ public void filterWhenLoginProcessingUrlIsSetInJavaConfigThenTheFilterHasIt() {
5555
.get();
5656
final Object matcher = ReflectionTestUtils.getField(filter, "requiresAuthenticationRequestMatcher");
5757
final Object pattern = ReflectionTestUtils.getField(matcher, "pattern");
58-
Assert.assertEquals("loginProcessingUrl mismatch", "/sample/jc/saml2/sso/{registrationId}", pattern);
58+
Assert.assertEquals("loginProcessingUrl mismatch", "/login/saml2/sso/{registrationId}", pattern);
5959
}
6060
}

0 commit comments

Comments
 (0)