2012-11-13 12 views
8

Sto cercando di attivare la funzionalità Run-As in Spring Security 3.1. La cosa strana è che non riesco a trovare un singolo esempio. Anche lo Spring Security Book non copre affatto l'argomento.Spring Security 3.1 Run-As

Questa è la parte della sicurezza del contesto dell'applicazione.

<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> 

In fase di esecuzione primavera 'magicamente' crea un'istanza di org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor ma non cablare la mia runAsManager e quindi utilizza il NullRunAsManager che viene creato per impostazione predefinita.

Puoi mostrarmi un esempio di Spring Security 3.1 valido che dimostra l'esecuzione e l'utilizzo di annotazioni JSR-250 come @RunAs?

+1

Sono rimasto perplesso dalla mancanza di esempi, quindi ne ho scritto uno dettagliato qualche tempo fa: https://dzone.com/articles/spring-security-run-example – kaqqao

risposta

3

In realtà è possibile utilizzare Primavera di sicurezza namespace XML per impostare RunAsManager:

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

Non so di alcun @RunAs integrazione out-of-box. Ma sono sicuro che è possibile implementarlo da solo e integrarsi con Spring Security.