Skip to content

Commit 0c0e298

Browse files
committed
Polish Saml2 XML Use of SecurityContextHolderStrategy
Issue gh-11061
1 parent b4d13e7 commit 0c0e298

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

config/src/main/java/org/springframework/security/config/http/Saml2LogoutBeanDefinitionParser.java

+12-2
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import org.springframework.beans.factory.xml.ParserContext;
3434
import org.springframework.security.core.Authentication;
3535
import org.springframework.security.core.context.SecurityContextHolder;
36+
import org.springframework.security.core.context.SecurityContextHolderStrategy;
3637
import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticatedPrincipal;
3738
import org.springframework.security.saml2.provider.service.web.DefaultRelyingPartyRegistrationResolver;
3839
import org.springframework.security.saml2.provider.service.web.authentication.logout.Saml2LogoutRequestFilter;
@@ -166,6 +167,8 @@ private BeanMetadataElement createLogoutRequestMatcher() {
166167
BeanMetadataElement logoutMatcher = BeanDefinitionBuilder.rootBeanDefinition(AntPathRequestMatcher.class)
167168
.addConstructorArgValue(this.logoutUrl).addConstructorArgValue("POST").getBeanDefinition();
168169
BeanMetadataElement saml2Matcher = BeanDefinitionBuilder.rootBeanDefinition(Saml2RequestMatcher.class)
170+
.addPropertyValue("securityContextHolderStrategy",
171+
this.authenticationFilterSecurityContextHolderStrategy)
169172
.getBeanDefinition();
170173
return BeanDefinitionBuilder.rootBeanDefinition(AndRequestMatcher.class)
171174
.addConstructorArgValue(toManagedList(logoutMatcher, saml2Matcher)).getBeanDefinition();
@@ -227,17 +230,24 @@ public boolean matches(HttpServletRequest request) {
227230

228231
}
229232

230-
private static class Saml2RequestMatcher implements RequestMatcher {
233+
public static class Saml2RequestMatcher implements RequestMatcher {
234+
235+
private SecurityContextHolderStrategy securityContextHolderStrategy = SecurityContextHolder
236+
.getContextHolderStrategy();
231237

232238
@Override
233239
public boolean matches(HttpServletRequest request) {
234-
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
240+
Authentication authentication = this.securityContextHolderStrategy.getContext().getAuthentication();
235241
if (authentication == null) {
236242
return false;
237243
}
238244
return authentication.getPrincipal() instanceof Saml2AuthenticatedPrincipal;
239245
}
240246

247+
public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy) {
248+
this.securityContextHolderStrategy = securityContextHolderStrategy;
249+
}
250+
241251
}
242252

243253
}

0 commit comments

Comments
 (0)