|
|
|
@ -10,6 +10,7 @@ import org.apache.commons.logging.Log; |
|
|
|
import org.apache.commons.logging.LogFactory; |
|
|
|
import org.apache.commons.logging.LogFactory; |
|
|
|
import org.springframework.security.authentication.AuthenticationTrustResolver; |
|
|
|
import org.springframework.security.authentication.AuthenticationTrustResolver; |
|
|
|
import org.springframework.security.authentication.AuthenticationTrustResolverImpl; |
|
|
|
import org.springframework.security.authentication.AuthenticationTrustResolverImpl; |
|
|
|
|
|
|
|
import org.springframework.security.core.Authentication; |
|
|
|
import org.springframework.security.core.context.SecurityContext; |
|
|
|
import org.springframework.security.core.context.SecurityContext; |
|
|
|
import org.springframework.security.core.context.SecurityContextHolder; |
|
|
|
import org.springframework.security.core.context.SecurityContextHolder; |
|
|
|
import org.springframework.security.core.context.SecurityContextHolderStrategy; |
|
|
|
import org.springframework.security.core.context.SecurityContextHolderStrategy; |
|
|
|
@ -328,16 +329,22 @@ public class HttpSessionSecurityContextRepository implements SecurityContextRepo |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
protected void saveContext(SecurityContext context) { |
|
|
|
protected void saveContext(SecurityContext context) { |
|
|
|
|
|
|
|
final Authentication authentication = context.getAuthentication(); |
|
|
|
|
|
|
|
HttpSession httpSession = request.getSession(false); |
|
|
|
|
|
|
|
|
|
|
|
// See SEC-776
|
|
|
|
// See SEC-776
|
|
|
|
if (authenticationTrustResolver.isAnonymous(context.getAuthentication())) { |
|
|
|
if (authentication == null || authenticationTrustResolver.isAnonymous(authentication)) { |
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
if (logger.isDebugEnabled()) { |
|
|
|
logger.debug("SecurityContext contents are anonymous - context will not be stored in HttpSession. "); |
|
|
|
logger.debug("SecurityContext is empty or anonymous - context will not be stored in HttpSession. "); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (httpSession != null) { |
|
|
|
|
|
|
|
// SEC-1587 A non-anonymous context may still be in the session
|
|
|
|
|
|
|
|
httpSession.removeAttribute(SPRING_SECURITY_CONTEXT_KEY); |
|
|
|
} |
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
HttpSession httpSession = request.getSession(false); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (httpSession == null) { |
|
|
|
if (httpSession == null) { |
|
|
|
httpSession = createNewSessionIfAllowed(context); |
|
|
|
httpSession = createNewSessionIfAllowed(context); |
|
|
|
} |
|
|
|
} |
|
|
|
|