2222
2323import eu .openanalytics .containerproxy .auth .IAuthenticationBackend ;
2424import eu .openanalytics .containerproxy .auth .impl .saml .AuthenticationFailureHandler ;
25+ import eu .openanalytics .containerproxy .auth .impl .saml .DisableSaml2LogoutRequestFilterFilter ;
2526import eu .openanalytics .containerproxy .auth .impl .saml .Saml2MetadataFilter ;
2627import eu .openanalytics .containerproxy .util .ContextPathHelper ;
2728import jakarta .servlet .http .HttpServletRequest ;
4041import org .springframework .security .saml2 .provider .service .metadata .OpenSamlMetadataResolver ;
4142import org .springframework .security .saml2 .provider .service .registration .RelyingPartyRegistrationRepository ;
4243import org .springframework .security .saml2 .provider .service .web .authentication .Saml2WebSsoAuthenticationFilter ;
44+ import org .springframework .security .saml2 .provider .service .web .authentication .logout .Saml2LogoutRequestFilter ;
4345import org .springframework .security .saml2 .provider .service .web .authentication .logout .Saml2LogoutRequestResolver ;
4446import org .springframework .security .web .authentication .SavedRequestAwareAuthenticationSuccessHandler ;
4547import org .springframework .security .web .authentication .logout .LogoutFilter ;
4648import org .springframework .security .web .util .matcher .AndRequestMatcher ;
4749import org .springframework .security .web .util .matcher .AntPathRequestMatcher ;
4850import org .springframework .security .web .util .matcher .RequestMatcher ;
4951import org .springframework .stereotype .Component ;
52+ import org .springframework .web .filter .CorsFilter ;
5053
5154import javax .inject .Inject ;
5255
@@ -117,11 +120,12 @@ public void configureHttpSecurity(HttpSecurity http) throws Exception {
117120 .authenticationManager (new ProviderManager (samlAuthenticationProvider ))
118121 .failureHandler (failureHandler )
119122 .successHandler (successHandler ))
120- .saml2Logout (saml -> saml
121- .logoutUrl (SAML_LOGOUT_SERVICE_LOCATION_PATH )
122- .logoutResponse (r -> r .logoutUrl (SAML_LOGOUT_SERVICE_RESPONSE_LOCATION_PATH ))
123- .logoutRequest (r -> r .logoutRequestResolver (saml2LogoutRequestResolver ))
124- .addObjectPostProcessor (
123+ .saml2Logout (saml -> {
124+ saml .logoutUrl (SAML_LOGOUT_SERVICE_LOCATION_PATH )
125+ .logoutResponse (r -> r .logoutUrl (SAML_LOGOUT_SERVICE_RESPONSE_LOCATION_PATH ))
126+ .logoutRequest (r -> r .logoutRequestResolver (saml2LogoutRequestResolver ));
127+
128+ saml .addObjectPostProcessor (
125129 new ObjectPostProcessor <LogoutFilter >() {
126130 @ Override
127131 public <O extends LogoutFilter > O postProcess (O object ) {
@@ -132,8 +136,21 @@ public <O extends LogoutFilter> O postProcess(O object) {
132136 return object ;
133137 }
134138 }
135- ))
136- .addFilterBefore (metadataFilter , Saml2WebSsoAuthenticationFilter .class );
139+ );
140+
141+ saml .addObjectPostProcessor (
142+ new ObjectPostProcessor <Saml2LogoutRequestFilter >() {
143+ @ Override
144+ public <O extends Saml2LogoutRequestFilter > O postProcess (O object ) {
145+ // override the name of the filter, so it can be used in DisableSaml2LogoutRequestFilterFilter
146+ // See #33066.
147+ object .setBeanName ("Saml2LogoutRequestFilter" );
148+ return object ;
149+ }
150+ });
151+ })
152+ .addFilterBefore (metadataFilter , Saml2WebSsoAuthenticationFilter .class )
153+ .addFilterAfter (new DisableSaml2LogoutRequestFilterFilter (), CorsFilter .class );
137154 }
138155
139156 @ Override
0 commit comments