2012-11-12 9 views
6

Mam aplikację internetową z zabezpieczeniami sprężynowymi skonfigurowanymi tak, aby ograniczać dostęp zarówno do adresów URL, jak i metod. Chcę wyłączyć go całkowicie domyślnie i umożliwić moim klientom łatwe włączenie go, jeśli chcą (mogą uzyskać dostęp tylko do "spring-security.xml").Wyłączenie zabezpieczenia metody Spring w wersji 3.0.x

udało mi się wyłączyć przechwytywania adresów URL, ale moja metoda zabezpieczenia jest nadal aktywna ...

Każdy trop?

(nie chcem zmienić klient mojego web.xml, więc niestety modyfikując „global-metody-Security” ustawienia za każdym razem nie jest rozwiązaniem ...)

To jest mój zaktualizowany konfiguracja sprężyny security.xml:

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

i nadpisane metody DelegatingFilterProxy.doFilter tak:

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); 
    } 
} 

i jest to przykład zabezpieczenia metodą jaką:

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

Odpowiedz

4

Gdybym był tobą, nie użyłbym niestandardowej implementacji łańcucha filtrów, tylko tej z pudełka. Można włączyć i wyłączyć sekcje konfiguracji Bean (od wiosny 3.0) z elementów zagnieżdżonych, więc coś w tym może być wygodne:

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

Aplikacja jest teraz bezbronny w profilu domyślnym (i każdy inny, ale „bezpieczne "profil"). Możesz włączyć bezpieczny profil, podając właściwość systemową spring.profiles.active = secure lub jawnie ustawiając go w inicjalizatorze kontekstu lub serwletu.

Powiązane problemy