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() {
// ...
}