2012-11-12 11 views
6

Possiedo un'applicazione Web con sicurezza di sicurezza configurata per limitare l'accesso su entrambi gli URL e i metodi. Voglio disabilitarlo completamente per impostazione predefinita e consentire ai miei clienti di accenderlo facilmente se lo desiderano (possono solo accedere a "spring-security.xml").Disabilita sicurezza metodo Spring nella versione 3.0.x

sono riuscito a spegnere l'intercettazione URL, ma la mia sicurezza metodo è ancora attivo ...

Qualsiasi indizio?

(Non voglio lasciare che il cambiamento del cliente il mio web.xml, così purtroppo modificando il "metodo globale-sicurezza" impostazione ogni volta che non è un'opzione ...)

Questo è il mio aggiornamento configurazione molla security.xml:

<http auto-config='true' use-expressions="true"> 
    <intercept-url pattern="/**" access="permitAll" /> 
    <http-basic /> 
    <anonymous /> 
</http> 

ho sovrascritto il metodo DelegatingFilterProxy.doFilter simili:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) 
      throws ServletException, IOException { 
    final String springSecured = System.getProperty("springSecured"); 

    if (StringUtils.isNotBlank(springSecured) && springSecured.equalsIgnoreCase("true")) { 
     // Call the delegate 
     super.doFilter(request, response, filterChain); 
    } else { 
     // Ignore the DelegatingProxyFilter delegate 
     filterChain.doFilter(request, response); 
    } 
} 

e questo è un esempio del metodo sicurezza ho:

@RequestMapping(
     value = "applications/{applicationName}/timeout/{timeout}", 
     method = RequestMethod.POST) 
public 
@ResponseBody 
@PreAuthorize("isFullyAuthenticated() and hasPermission(#authGroups, 'deploy')") 
Object deployApplication() { 
    // ... 
} 

risposta

4

Se fossi in te, non utilizzerei un'implementazione personalizzata della catena di filtri, solo quella pronta per l'uso. È possibile attivare e disattivare le sezioni di configurazione di fagioli (dalla primavera 3.0) con elementi nidificati, quindi qualcosa di simile potrebbe essere conveniente:

<beans profile="secure"> 
    <http auto-config='true' use-expressions="true">...</http> 
</beans> 

L'applicazione è ora protetto nel profilo predefinito (e qualsiasi altro, ma la "sicura "profilo). È possibile abilitare il profilo sicuro fornendo una proprietà di sistema spring.profiles.active = secure o impostandolo esplicitamente in un contesto o inizializzatore di servlet.

Problemi correlati