39
39
import java .util .HashMap ;
40
40
import java .util .HashSet ;
41
41
import java .util .List ;
42
+ import java .util .Locale ;
42
43
import java .util .Map ;
43
44
import java .util .Set ;
44
45
import java .util .stream .Collectors ;
45
46
import java .util .stream .Stream ;
46
47
48
+ import jakarta .servlet .http .Cookie ;
47
49
import org .apache .commons .lang3 .ObjectUtils ;
48
50
import org .apereo .cas .client .validation .AssertionImpl ;
49
51
import org .instancio .Instancio ;
58
60
import org .springframework .beans .factory .config .BeanDefinition ;
59
61
import org .springframework .context .annotation .ClassPathScanningCandidateComponentProvider ;
60
62
import org .springframework .core .type .filter .AssignableTypeFilter ;
63
+ import org .springframework .mock .web .MockHttpServletRequest ;
61
64
import org .springframework .mock .web .MockHttpSession ;
62
65
import org .springframework .security .access .AccessDeniedException ;
63
66
import org .springframework .security .access .AuthorizationServiceException ;
67
+ import org .springframework .security .access .SecurityConfig ;
64
68
import org .springframework .security .access .intercept .RunAsUserToken ;
65
69
import org .springframework .security .authentication .AbstractAuthenticationToken ;
66
70
import org .springframework .security .authentication .AccountExpiredException ;
104
108
import org .springframework .security .core .authority .AuthorityUtils ;
105
109
import org .springframework .security .core .context .SecurityContext ;
106
110
import org .springframework .security .core .context .SecurityContextImpl ;
111
+ import org .springframework .security .core .context .TransientSecurityContext ;
107
112
import org .springframework .security .core .session .AbstractSessionEvent ;
108
113
import org .springframework .security .core .session .ReactiveSessionInformation ;
109
114
import org .springframework .security .core .session .SessionInformation ;
110
115
import org .springframework .security .core .userdetails .UserDetails ;
111
116
import org .springframework .security .core .userdetails .UsernameNotFoundException ;
117
+ import org .springframework .security .ldap .ppolicy .PasswordPolicyControl ;
112
118
import org .springframework .security .ldap .ppolicy .PasswordPolicyErrorStatus ;
113
119
import org .springframework .security .ldap .ppolicy .PasswordPolicyException ;
120
+ import org .springframework .security .ldap .ppolicy .PasswordPolicyResponseControl ;
114
121
import org .springframework .security .ldap .userdetails .LdapAuthority ;
115
122
import org .springframework .security .oauth2 .client .ClientAuthorizationException ;
116
123
import org .springframework .security .oauth2 .client .ClientAuthorizationRequiredException ;
179
186
import org .springframework .security .saml2 .provider .service .authentication .TestSaml2Authentications ;
180
187
import org .springframework .security .saml2 .provider .service .authentication .TestSaml2PostAuthenticationRequests ;
181
188
import org .springframework .security .saml2 .provider .service .authentication .TestSaml2RedirectAuthenticationRequests ;
189
+ import org .springframework .security .web .PortResolverImpl ;
182
190
import org .springframework .security .web .authentication .WebAuthenticationDetails ;
183
191
import org .springframework .security .web .authentication .preauth .PreAuthenticatedAuthenticationToken ;
184
192
import org .springframework .security .web .authentication .preauth .PreAuthenticatedCredentialsNotFoundException ;
194
202
import org .springframework .security .web .csrf .InvalidCsrfTokenException ;
195
203
import org .springframework .security .web .csrf .MissingCsrfTokenException ;
196
204
import org .springframework .security .web .firewall .RequestRejectedException ;
205
+ import org .springframework .security .web .savedrequest .DefaultSavedRequest ;
206
+ import org .springframework .security .web .savedrequest .SimpleSavedRequest ;
197
207
import org .springframework .security .web .server .firewall .ServerExchangeRejectedException ;
198
208
import org .springframework .security .web .session .HttpSessionCreatedEvent ;
199
209
import org .springframework .security .web .webauthn .api .Bytes ;
@@ -442,6 +452,8 @@ class SpringSecurityCoreVersionSerializableTests {
442
452
generatorByClassName .put (JaasAuthenticationSuccessEvent .class ,
443
453
(r ) -> new JaasAuthenticationSuccessEvent (authentication ));
444
454
generatorByClassName .put (AbstractSessionEvent .class , (r ) -> new AbstractSessionEvent (securityContext ));
455
+ generatorByClassName .put (SecurityConfig .class , (r ) -> new SecurityConfig ("value" ));
456
+ generatorByClassName .put (TransientSecurityContext .class , (r ) -> new TransientSecurityContext (authentication ));
445
457
446
458
// cas
447
459
generatorByClassName .put (CasServiceTicketAuthenticationToken .class , (r ) -> {
@@ -466,6 +478,11 @@ class SpringSecurityCoreVersionSerializableTests {
466
478
(r ) -> new LdapAuthority ("USER" , "username" , Map .of ("attribute" , List .of ("value1" , "value2" ))));
467
479
generatorByClassName .put (PasswordPolicyException .class ,
468
480
(r ) -> new PasswordPolicyException (PasswordPolicyErrorStatus .INSUFFICIENT_PASSWORD_QUALITY ));
481
+ generatorByClassName .put (PasswordPolicyControl .class , (r ) -> new PasswordPolicyControl (true ));
482
+ generatorByClassName .put (PasswordPolicyResponseControl .class , (r ) -> {
483
+ byte [] encodedResponse = { 0x30 , 0x05 , (byte ) 0xA0 , 0x03 , (byte ) 0xA0 , 0x1 , 0x21 };
484
+ return new PasswordPolicyResponseControl (encodedResponse );
485
+ });
469
486
470
487
// saml2-service-provider
471
488
generatorByClassName .put (Saml2AuthenticationException .class ,
@@ -521,6 +538,20 @@ class SpringSecurityCoreVersionSerializableTests {
521
538
(r ) -> new AuthenticationSwitchUserEvent (authentication , user ));
522
539
generatorByClassName .put (HttpSessionCreatedEvent .class ,
523
540
(r ) -> new HttpSessionCreatedEvent (new MockHttpSession ()));
541
+ generatorByClassName .put (SimpleSavedRequest .class , (r ) -> {
542
+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "/uri" );
543
+ request .setQueryString ("query=string" );
544
+ request .setScheme ("https" );
545
+ request .setServerName ("localhost" );
546
+ request .setServerPort (80 );
547
+ request .setRequestURI ("/uri" );
548
+ request .setCookies (new Cookie ("name" , "value" ));
549
+ request .addHeader ("header" , "value" );
550
+ request .addParameter ("parameter" , "value" );
551
+ request .setPathInfo ("/path" );
552
+ request .addPreferredLocale (Locale .ENGLISH );
553
+ return new SimpleSavedRequest (new DefaultSavedRequest (request , new PortResolverImpl (), "continue" ));
554
+ });
524
555
525
556
// webauthn
526
557
generatorByClassName .put (Bytes .class , (r ) -> TestBytes .get ());
0 commit comments