2012-11-13 5 views
8

J'essaye de faire fonctionner la fonction Run-As dans Spring Security 3.1. La chose étrange est que je ne peux pas trouver un seul exemple. Même le Spring Security Book ne couvre pas le sujet du tout.Spring Security 3.1 Run-As

Voici la partie sécurité de mon contexte d'application.

<security:global-method-security 
     pre-post-annotations="enabled"> 
    <security:expression-handler ref="customExpressionHandler"/> 
</security:global-method-security> 

<bean id="runAsManager" 
     class="org.springframework.security.access.intercept.RunAsManagerImpl"> 
    <property name="key" value="my_run_as_password"/> 
</bean> 

<bean id="runAsAuthenticationProvider" 
     class="org.springframework.security.access.intercept.RunAsImplAuthenticationProvider"> 
    <property name="key" value="my_run_as_password"/> 
</bean> 
<security:http auto-config="true" create-session="always"> 
    <security:remember-me key="njc2"/> 
    <security:session-management invalid-session-url="/sessionTimeout.html"/> 
    <security:intercept-url pattern="/**" access="ROLE_USER"/> 
    <security:form-login login-page='/login.html' 
         authentication-success-handler-ref="njcAuthenticationSuccessHandler" 
         authentication-failure-url="/login-failure.html"/> 
    <security:logout invalidate-session="true" logout-url="/j_spring_security_logout" 
        logout-success-url="/login.html"/> 
</security:http> 

Lors de l'exécution Spring 'par magie crée une instance de org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor mais ne pas câbler mon runAsManager et utilise donc le NullRunAsManager qui est créé par défaut. Pouvez-vous me montrer un exemple valable de Spring Security 3.1 qui montre comment utiliser et utiliser les annotations JSR-250 telles que @RunAs?

+1

J'ai aussi été intrigué par le manque d'exemples, alors j'en ai écrit moi-même un détail: https://dzone.com/articles/spring-security-run-example – kaqqao

Répondre

3

En fait, vous pouvez utiliser l'espace de noms XML Spring Security pour définir RunAsManager:

<sec:global-method-security run-as-manager-ref="runAsManager"> 
    <!-- Rest of your code --> 
</sec:global-method-security> 

Je ne connais pas d'intégration hors-boîte @RunAs. Mais je suis sûr qu'il est possible d'implémenter cela par vous-même et de l'intégrer à Spring Security.

Questions connexes