|
29 | 29 | import org.springframework.security.saml2.credentials.Saml2X509Credential;
|
30 | 30 | import org.springframework.security.saml2.provider.service.registration.InMemoryRelyingPartyRegistrationRepository;
|
31 | 31 | import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistration;
|
| 32 | +import org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistrationRepository; |
32 | 33 | import org.springframework.security.saml2.provider.service.servlet.filter.Saml2WebSsoAuthenticationFilter;
|
33 | 34 |
|
34 | 35 | import static org.springframework.security.saml2.credentials.Saml2X509Credential.Saml2X509CredentialType.DECRYPTION;
|
35 | 36 | import static org.springframework.security.saml2.credentials.Saml2X509Credential.Saml2X509CredentialType.SIGNING;
|
36 | 37 | import static org.springframework.security.saml2.credentials.Saml2X509Credential.Saml2X509CredentialType.VERIFICATION;
|
| 38 | +import static org.springframework.security.saml2.provider.service.registration.RelyingPartyRegistration.withRegistrationId; |
37 | 39 |
|
38 | 40 | @EnableWebSecurity
|
39 | 41 | @EnableGlobalMethodSecurity(prePostEnabled = true)
|
40 | 42 | public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
41 | 43 |
|
42 |
| - RelyingPartyRegistration getSaml2AuthenticationConfiguration() throws Exception { |
43 |
| - //remote IDP entity ID |
44 |
| - String idpEntityId = "https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/metadata.php"; |
45 |
| - //remote WebSSO Endpoint - Where to Send AuthNRequests to |
46 |
| - String webSsoEndpoint = "https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/SSOService.php"; |
47 |
| - //local registration ID |
| 44 | + RelyingPartyRegistrationRepository relyingPartyRegistrations() { |
48 | 45 | String registrationId = "simplesamlphp";
|
49 |
| - //local entity ID - autogenerated based on URL |
50 |
| - String localEntityIdTemplate = "{baseUrl}/saml2/service-provider-metadata/{registrationId}"; |
51 |
| - //local signing (and decryption key) |
| 46 | + |
| 47 | + String rpEntityId = "{baseUrl}/saml2/service-provider-metadata/{registrationId}"; |
| 48 | + String assertionConsumerServiceLocation = "{baseUrl}" + Saml2WebSsoAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI; |
52 | 49 | Saml2X509Credential signingCredential = getSigningCredential();
|
53 |
| - //IDP certificate for verification of incoming messages |
54 |
| - Saml2X509Credential idpVerificationCertificate = getVerificationCertificate(); |
55 |
| - String acsUrlTemplate = "{baseUrl}" + Saml2WebSsoAuthenticationFilter.DEFAULT_FILTER_PROCESSES_URI; |
56 |
| - return RelyingPartyRegistration.withRegistrationId(registrationId) |
| 50 | + |
| 51 | + String apEntityId = "https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/metadata.php"; |
| 52 | + String singleSignOnServiceLocation = "https://simplesaml-for-spring-saml.cfapps.io/saml2/idp/SSOService.php"; |
| 53 | + Saml2X509Credential apVerificationCertificate = getVerificationCertificate(); |
| 54 | + |
| 55 | + RelyingPartyRegistration relyingParty = withRegistrationId(registrationId) |
| 56 | + .entityId(rpEntityId) |
57 | 57 | .signingX509Credentials(c -> c.add(signingCredential))
|
58 |
| - .entityId(localEntityIdTemplate) |
59 |
| - .assertionConsumerServiceLocation(acsUrlTemplate) |
| 58 | + .assertionConsumerServiceLocation(assertionConsumerServiceLocation) |
60 | 59 | .providerDetails(assertingParty -> assertingParty
|
61 |
| - .entityId(idpEntityId) |
62 |
| - .verificationX509Credentials(c -> c.add(idpVerificationCertificate)) |
63 |
| - .singleSignOnServiceLocation(webSsoEndpoint)) |
| 60 | + .entityId(apEntityId) |
| 61 | + .verificationX509Credentials(c -> c.add(apVerificationCertificate)) |
| 62 | + .singleSignOnServiceLocation(singleSignOnServiceLocation) |
| 63 | + ) |
64 | 64 | .build();
|
| 65 | + return new InMemoryRelyingPartyRegistrationRepository(relyingParty); |
65 | 66 | }
|
66 | 67 |
|
67 | 68 | @Override
|
68 | 69 | protected void configure(HttpSecurity http) throws Exception {
|
69 | 70 | // @formatter:off
|
70 | 71 | http
|
71 |
| - .authorizeRequests() |
| 72 | + .authorizeRequests(authz -> authz |
72 | 73 | .anyRequest().authenticated()
|
73 |
| - .and() |
74 |
| - .saml2Login() |
75 |
| - .relyingPartyRegistrationRepository( |
76 |
| - new InMemoryRelyingPartyRegistrationRepository( |
77 |
| - getSaml2AuthenticationConfiguration() |
78 |
| - ) |
79 |
| - ) |
| 74 | + ) |
| 75 | + .saml2Login(saml2 -> saml2 |
| 76 | + .relyingPartyRegistrationRepository(relyingPartyRegistrations()) |
80 | 77 | .loginProcessingUrl("/sample/jc/saml2/sso/{registrationId}")
|
81 |
| - ; |
| 78 | + ); |
82 | 79 | // @formatter:on
|
83 | 80 | }
|
84 | 81 |
|
|
0 commit comments