Как выполнить RunAs, используя метод безопасности с Spring MVC 3.2 и Spring Security 3.1
У меня есть веб-приложение с Spring MVC 3.2 и Spring Security 3.1
Я использую базовую безопасность ролей и реализовал UserDetailsService и UserDetails для предоставления GrantedAuthority.
Я включил глобальную защиту методов с помощью jsr250-annotations
Все до сих пор работает, как и ожидалось, с входом в пользовательский метод доступа, ограниченный заявленными ролями.
У меня есть еще одно требование - запускать определенные методы, вызываемые во время инициализации приложения, в качестве специального пользователя с «системной ролью», в идеале в соответствии с JavaEE RunAs. Я не уверен, как это сделать в Spring Security.
Должен ли я пытаться создатьPreAuthenticatedAuthenticationToken
с некоторыми выдуманными ценностями и полномочиями «системной роли».
Я мог бы тогда сделать что-то вродеSecurityContextHolder.getContext().setAuthentication(token);
при инициализации приложения.
В качестве альтернативы я должен пытаться использовать RunAsManager. Звучит так, как мне нужно, но я не нашел простых примеров того, как я мог бы это использовать.
Я довольно новичок в Spring Security и не уверен, как лучше поступить.