|
18 | 18 |
|
19 | 19 | import java.io.IOException;
|
20 | 20 | import java.net.URLDecoder;
|
21 |
| -import java.time.Duration; |
22 | 21 | import java.util.Base64;
|
23 |
| -import java.util.Collection; |
24 | 22 | import java.util.Collections;
|
25 | 23 |
|
26 | 24 | import jakarta.servlet.ServletException;
|
|
32 | 30 | import org.junit.jupiter.api.Test;
|
33 | 31 | import org.junit.jupiter.api.extension.ExtendWith;
|
34 | 32 | import org.mockito.ArgumentCaptor;
|
35 |
| -import org.opensaml.saml.saml2.core.Assertion; |
36 | 33 |
|
37 | 34 | import org.springframework.beans.factory.BeanCreationException;
|
38 | 35 | import org.springframework.beans.factory.annotation.Autowired;
|
39 | 36 | import org.springframework.context.ConfigurableApplicationContext;
|
40 | 37 | import org.springframework.context.annotation.Bean;
|
41 | 38 | import org.springframework.context.annotation.Import;
|
42 |
| -import org.springframework.core.convert.converter.Converter; |
43 | 39 | import org.springframework.mock.web.MockFilterChain;
|
44 | 40 | import org.springframework.mock.web.MockHttpServletRequest;
|
45 | 41 | import org.springframework.mock.web.MockHttpServletResponse;
|
|
57 | 53 | import org.springframework.security.config.test.SpringTestContextExtension;
|
58 | 54 | import org.springframework.security.core.Authentication;
|
59 | 55 | import org.springframework.security.core.AuthenticationException;
|
60 |
| -import org.springframework.security.core.GrantedAuthority; |
61 | 56 | import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
62 | 57 | import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
63 |
| -import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper; |
64 | 58 | import org.springframework.security.saml2.core.Saml2ErrorCodes;
|
65 | 59 | import org.springframework.security.saml2.core.Saml2Utils;
|
66 | 60 | import org.springframework.security.saml2.core.TestSaml2X509Credentials;
|
67 | 61 | import org.springframework.security.saml2.provider.service.authentication.AbstractSaml2AuthenticationRequest;
|
68 | 62 | import org.springframework.security.saml2.provider.service.authentication.OpenSaml4AuthenticationProvider;
|
69 |
| -import org.springframework.security.saml2.provider.service.authentication.OpenSamlAuthenticationProvider; |
70 | 63 | import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticatedPrincipal;
|
71 | 64 | import org.springframework.security.saml2.provider.service.authentication.Saml2Authentication;
|
72 | 65 | import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticationException;
|
|
118 | 111 | @ExtendWith(SpringTestContextExtension.class)
|
119 | 112 | public class Saml2LoginConfigurerTests {
|
120 | 113 |
|
121 |
| - private static final Converter<Assertion, Collection<? extends GrantedAuthority>> AUTHORITIES_EXTRACTOR = ( |
122 |
| - a) -> Collections.singletonList(new SimpleGrantedAuthority("TEST")); |
123 |
| - |
124 |
| - private static final GrantedAuthoritiesMapper AUTHORITIES_MAPPER = (authorities) -> Collections |
125 |
| - .singletonList(new SimpleGrantedAuthority("TEST CONVERTED")); |
126 |
| - |
127 |
| - private static final Duration RESPONSE_TIME_VALIDATION_SKEW = Duration.ZERO; |
128 |
| - |
129 | 114 | private static final String SIGNED_RESPONSE = "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c2FtbDJwOlJlc3BvbnNlIHhtbG5zOnNhbWwycD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9ycC5leGFtcGxlLm9yZy9hY3MiIElEPSJfYzE3MzM2YTAtNTM1My00MTQ5LWI3MmMtMDNkOWY5YWYzMDdlIiBJc3N1ZUluc3RhbnQ9IjIwMjAtMDgtMDRUMjI6MDQ6NDUuMDE2WiIgVmVyc2lvbj0iMi4wIj48c2FtbDI6SXNzdWVyIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5hcC1lbnRpdHktaWQ8L3NhbWwyOklzc3Vlcj48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIj4KPGRzOlNpZ25lZEluZm8+CjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8xMC94bWwtZXhjLWMxNG4jIi8+CjxkczpTaWduYXR1cmVNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGRzaWctbW9yZSNyc2Etc2hhMjU2Ii8+CjxkczpSZWZlcmVuY2UgVVJJPSIjX2MxNzMzNmEwLTUzNTMtNDE0OS1iNzJjLTAzZDlmOWFmMzA3ZSI+CjxkczpUcmFuc2Zvcm1zPgo8ZHM6VHJhbnNmb3JtIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI2VudmVsb3BlZC1zaWduYXR1cmUiLz4KPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPgo8L2RzOlRyYW5zZm9ybXM+CjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzA0L3htbGVuYyNzaGEyNTYiLz4KPGRzOkRpZ2VzdFZhbHVlPjYzTmlyenFzaDVVa0h1a3NuRWUrM0hWWU5aYWFsQW1OQXFMc1lGMlRuRDA9PC9kczpEaWdlc3RWYWx1ZT4KPC9kczpSZWZlcmVuY2U+CjwvZHM6U2lnbmVkSW5mbz4KPGRzOlNpZ25hdHVyZVZhbHVlPgpLMVlvWWJVUjBTclY4RTdVMkhxTTIvZUNTOTNoV25mOExnNnozeGZWMUlyalgzSXhWYkNvMVlYcnRBSGRwRVdvYTJKKzVOMmFNbFBHJiMxMzsKN2VpbDBZRC9xdUVRamRYbTNwQTBjZmEvY25pa2RuKzVhbnM0ZWQwanU1amo2dkpvZ2w2Smt4Q25LWUpwTU9HNzhtampmb0phengrWCYjMTM7CkM2NktQVStBYUdxeGVwUEQ1ZlhRdTFKSy9Jb3lBaitaa3k4Z2Jwc3VyZHFCSEJLRWxjdnVOWS92UGY0OGtBeFZBKzdtRGhNNUMvL1AmIzEzOwp0L084Y3NZYXB2UjZjdjZrdk45QXZ1N3FRdm9qVk1McHVxZWNJZDJwTUVYb0NSSnE2Nkd4MStNTUVPeHVpMWZZQlRoMEhhYjRmK3JyJiMxMzsKOEY2V1NFRC8xZllVeHliRkJqZ1Q4d2lEWHFBRU8wSVY4ZWRQeEE9PQo8L2RzOlNpZ25hdHVyZVZhbHVlPgo8L2RzOlNpZ25hdHVyZT48c2FtbDI6QXNzZXJ0aW9uIHhtbG5zOnNhbWwyPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIiBJRD0iQWUzZjQ5OGI4LTliMTctNDA3OC05ZDM1LTg2YTA4NDA4NDk5NSIgSXNzdWVJbnN0YW50PSIyMDIwLTA4LTA0VDIyOjA0OjQ1LjA3N1oiIFZlcnNpb249IjIuMCI+PHNhbWwyOklzc3Vlcj5hcC1lbnRpdHktaWQ8L3NhbWwyOklzc3Vlcj48c2FtbDI6U3ViamVjdD48c2FtbDI6TmFtZUlEPnRlc3RAc2FtbC51c2VyPC9zYW1sMjpOYW1lSUQ+PHNhbWwyOlN1YmplY3RDb25maXJtYXRpb24gTWV0aG9kPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6Y206YmVhcmVyIj48c2FtbDI6U3ViamVjdENvbmZpcm1hdGlvbkRhdGEgTm90QmVmb3JlPSIyMDIwLTA4LTA0VDIxOjU5OjQ1LjA5MFoiIE5vdE9uT3JBZnRlcj0iMjA0MC0wNy0zMFQyMjowNTowNi4wODhaIiBSZWNpcGllbnQ9Imh0dHBzOi8vcnAuZXhhbXBsZS5vcmcvYWNzIi8+PC9zYW1sMjpTdWJqZWN0Q29uZmlybWF0aW9uPjwvc2FtbDI6U3ViamVjdD48c2FtbDI6Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMjAtMDgtMDRUMjE6NTk6NDUuMDgwWiIgTm90T25PckFmdGVyPSIyMDQwLTA3LTMwVDIyOjA1OjA2LjA4N1oiLz48L3NhbWwyOkFzc2VydGlvbj48L3NhbWwycDpSZXNwb25zZT4=";
|
130 | 115 |
|
131 | 116 | private static final AuthenticationConverter AUTHENTICATION_CONVERTER = mock(AuthenticationConverter.class);
|
@@ -437,12 +422,12 @@ static class Saml2LoginConfigWithAuthenticationDefaultsWithPostProcessor extends
|
437 | 422 |
|
438 | 423 | @Override
|
439 | 424 | protected void configure(HttpSecurity http) throws Exception {
|
440 |
| - ObjectPostProcessor<OpenSamlAuthenticationProvider> processor = new ObjectPostProcessor<OpenSamlAuthenticationProvider>() { |
| 425 | + ObjectPostProcessor<OpenSaml4AuthenticationProvider> processor = new ObjectPostProcessor<>() { |
441 | 426 | @Override
|
442 |
| - public <O extends OpenSamlAuthenticationProvider> O postProcess(O provider) { |
443 |
| - provider.setResponseTimeValidationSkew(RESPONSE_TIME_VALIDATION_SKEW); |
444 |
| - provider.setAuthoritiesMapper(AUTHORITIES_MAPPER); |
445 |
| - provider.setAuthoritiesExtractor(AUTHORITIES_EXTRACTOR); |
| 427 | + public <O extends OpenSaml4AuthenticationProvider> O postProcess(O provider) { |
| 428 | + provider.setResponseValidator(OpenSaml4AuthenticationProvider.createDefaultResponseValidator()); |
| 429 | + provider.setResponseAuthenticationConverter( |
| 430 | + OpenSaml4AuthenticationProvider.createDefaultResponseAuthenticationConverter()); |
446 | 431 | return provider;
|
447 | 432 | }
|
448 | 433 | };
|
|
0 commit comments