How to set up Spring Security SecurityContextHolder strategy?
spring, spring-security
Solution
You can set the environment variable `spring.security.strategy` to `MODE_INHERITABLETHREADLOCAL`. You could also have a simple bean that during your web applications startup calls `SecurityContextHolder.setStrategyName(SecurityContextHolder.MODE_INHERITABLETHREADLOCAL)` and initialize that value in your context configuration file.
SecurityContextHolder API
Problem
I'm using asynchronous methods in my service (Spring 3 `@Async` annotation). And I've got a problem - spawned thread doesn't have security context. Cause of it is Spring Security by default uses `SecurityContextHolder.MODE_THREADLOCAL` strategy for its context holder. But I need to use `SecurityContextHolder.MODE_INHERITABLETHREADLOCAL` strategy. For the moment I set up strategy in my AuthenticationSuccessHandler. But in my point of view it's not a good practice. So how can I set it up in context configuration file? Version of spring security is 3.0.0.