私はSpring Bootアプリケーションを持っており、Spring Security(4.0.4)を使用しています。Spring Security 4:末尾のスラッシュを無視する方法
エンドポイントの現在のセキュリティー構成(Java)は、/some/endpoint
への呼び出しを許可しますが、/some/endpoint/
への呼び出しは許可しません。
私はここで検索しましたが、ドキュメンテーションを検索しましたが、末尾の空白を無視するスイッチはありません。例えば、Spring MVCので、私は次の操作を行うことができます。もちろん
@Configuration
public class ServletConfig extends WebMvcConfigurerAdapter {
@Override
public void configurePathMatch(final PathMatchConfigurer configurer) {
configurer.setUseTrailingSlashMatch(false);
}
}
を、上記のコードは、私が何をしたいの行動反対を変更しますが、それはちょうど私がやってみたいもののデモンストレーションとしての役割を果たすスプリングセキュリティ。
マイ(縮小)セキュリティ設定:
@Bean
public ResourceServerConfigurer resourceServerConfigurer(final ScopesProperties oauthProperties) {
return new ResourceServerConfigurerAdapter() {
@Override
public void configure(final HttpSecurity http) throws Exception {
http.sessionManagement().sessionCreationPolicy(NEVER).and()
.authorizeRequests()
.antMatchers(GET, "/foo")
.access(oauthProperties.getFooRead())
.antMatchers(GET, "/bar/*")
.access(oauthProperties.getBarRead())
.antMatchers(PUT, "/bar/*")
.access(oauthProperties.getBarWrite())
// everything else
.anyRequest().denyAll();
}
私は、余分なものを持っ避けるために好きな私は、ほとんど同じ理由で、私は避けたいのですが、正規表現マッチャーを使用することができることを知っていますすべてのエンドポイントが末尾にスラッシュを付けて同じエンドポイントを承認するだけのルール。私はエラーが発生しやすいすべてのエンドポイントでそれを行う必要があります。また、私はアリマッチャーを使用し、パスを/foo/**
に設定できることも知っています。問題は、異なる範囲のサブリソースを制御したい場合です。
それでは、Spring Securityに後続のスラッシュをグローバルに無視するように指示する方法は?誰かが同じ問題を抱えているだけの場合には、事前