2017-11-15 41 views
1

answer to this questionが正しく解釈されているかどうかを確認したいだけです。antMatcher()とantMatchers()のSpringセキュリティアプリケーション

我々はこれだけのように一つの経路を確保する必要がある場合:

http.antMatcher("/api/**").authorizeRequests().... 

その後antMatcher()を使用しています。私たちは、このように複数のURLパスを確保する必要がある場合は

http 
.authorizeRequests() 
    .antMatchers("/high_level_url_A/sub_level_1").hasRole('USER') 
    .antMatchers("/high_level_url_A/sub_level_2").hasRole('USER2') 
    ... 

その後antMatchers()を使用しています。

this questionには2つの回答がありますが、それぞれに提供されている例は、もう一方の例と矛盾しています。最初の答えは、著者がantMatcher()を必要とせず、2番目は `antMatcher()IIUCで始まると言います。

答えて

1

HttpSecurity.antMatcher()は、HttpSecurityインスタンスのデフォルトリクエストマッチャーをAntPathRequestMatcherからAnyRequestMatcherに変更します。 ExpressionUrlAuthorizationConfigurer.ExpressionInterceptUrlRegistry.antMatchers()は、現在のHttpSecurityインスタンスに関連付けられたエンドポイントのサブセットに認可ルールを適用するために使用されます。

例コード:上記の例で

http 
    .antMatcher("/api/**") 
    .httpBasic() 
     .disable() 
    .authorizeRequests() 
     .antMatchers("/api/user/**", "/api/ticket/**", "/index") 
      .hasRole("ROLE_USER"); 

、基本的な承認は/API/**に一致するすべてのエンドポイントのために無効になっています。さらに、/api/user/**または/api/ticket/**と一致するエンドポイントは、要求の認証にROLE_USERを含める必要があります。ただし、ユーザが/indexにアクセスしようとすると、基本的な認証プロンプトが表示されます。資格情報を入力すると、要求の認証にROLE_USERが含まれているかどうかにかかわらず、エンドポイントへのアクセスが許可されます。これは、.antMatcher( "/ api/**")は、HttpSecurityインスタンス全体のスコープを特定のAntMatcherに限定しているためです。

http 
    .requestMatchers() 
     .antMatchers("/api/user/**", "/api/ticket/**", "/index") 
     .and() 
    .httpBasic() 
     .disable() 
    .authorizeRequests() 
     .any() 
      .hasRole("ROLE_USER"); 
+0

@Ole:

以下の例は、HttpSecurityのスコープは、前の3つのAntMatchersと他には何が含まれていることを保証するであろういいえ、あなたは、グローバルセキュリティ設定をしない、あなたは、コンフィギュレーションのために必ず設定を行ってください。どの構成が 'antMatcher()'で使われるかだけを設定します。 – dur

+0

Spring Bootはデフォルト設定を持っているので、Spring Bootを使用しないと、あなたの例の結果は変わります。そしてあなたの例をSpring Bootで動作させるためには、設定の順序が正しいことが必要です。 – dur

+0

http.antMatcher( "/ api/**")を実行した場合、Springは "/ api/**"の設定を作成し、次にそれに対する特定の設定を適用します設定? http.antMatcher( "v2/api/**")と言うと、Springはバージョン2のAPIに適用される他のセキュリティ設定を作成しますか? – Ole

関連する問題