URL とメソッドの両方へのアクセスを制限するように構成されたスプリング セキュリティを備えた Web アプリケーションがあります。デフォルトで完全に無効にし、顧客が必要に応じて簡単に有効にできるようにしたい (「spring-security.xml」にしかアクセスできない)。
URL インターセプトをオフにできましたが、メソッドのセキュリティはまだ有効になっています...
どんな手掛かり?
(顧客に私の web.xml を変更させたくないので、残念ながら毎回 "global-method-security" 設定を変更することはオプションではありません...)
これは私の更新された spring-security.xml 構成です。
<http auto-config='true' use-expressions="true">
<intercept-url pattern="/**" access="permitAll" />
<http-basic />
<anonymous />
</http>
DelegatingFilterProxy.doFilter メソッドを次のようにオーバーライドしました。
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);
}
}
これは私が持っているメソッドセキュリティの例です:
@RequestMapping(
value = "applications/{applicationName}/timeout/{timeout}",
method = RequestMethod.POST)
public
@ResponseBody
@PreAuthorize("isFullyAuthenticated() and hasPermission(#authGroups, 'deploy')")
Object deployApplication() {
// ...
}