Cómo realizar RunAs usando el método de seguridad con Spring MVC 3.2 y Spring Security 3.1

Tengo una aplicación web con Spring MVC 3.2 y Spring Security 3.1

Estoy usando la base de seguridad de roles y he implementado UserDetailsService y UserDetails para proporcionar GrantedAuthority.

He habilitado la seguridad del método global con jsr250-anotaciones

Todo hasta aquí está funcionando como se esperaba con el acceso del método de usuario registrado restringido a los roles declarados.

Tengo un requisito adicional para ejecutar ciertos métodos llamados durante la inicialización de la aplicación como un usuario especial con un 'rol de sistema', idealmente en la línea de RunEE de JavaEE. No estoy seguro de cómo hacer esto en Spring Security.

¿Debería estar intentando crear unPreAuthenticatedAuthenticationToken con algunos valores inventados y una autoridad de 'rol del sistema'.
Entonces podría hacer algo comoSecurityContextHolder.getContext().setAuthentication(token); Al inicializar la aplicación.

Alternativamente, debería estar intentando usar el RunAsManager. Suena como lo que necesito, pero no he encontrado ningún ejemplo simple de cómo podría usarlo.

Soy bastante nuevo en Spring Security y no estoy seguro de cuál es la mejor manera de proceder.

Respuestas a la pregunta(3)

Su respuesta a la pregunta