Spring Security での複数の HTTP セキュリティ構成
Spring Security では、異なるログイン ページとセキュリティ構成が必要になる状況が発生する場合があります。アプリケーションのセクション。これを実現するには、MultipleHttpSecurityConfig アプローチを利用できます。
特定のインスタンスでは、@EnableWebSecurity アノテーションが付けられた親クラス内で 2 つのネストされたクラス ProviderSecurity と ConsumerSecurity を構成しました。 /admin/** のセキュリティ構成は期待どおりに機能していますが、「/consumer/**」によって制限されているページが意図したとおりにセキュリティ保護されていないことがわかりました。
分析
この問題は、両方の構成がデフォルトですべてのリクエストを許可しているという事実から発生します。これにより、定義されたセキュリティ制限に関係なく、すべてのページへのアクセスが許可されます。これを修正するには、特定の URL またはリクエスト パターンへのアクセスを明示的に制限する必要があります。
解決策
これを解決するには、次の手順を実行します。
ProviderSecurity 構成の antMatcher メソッドを利用して、URL パターンを定義します。適用対象:
@Configuration @Order(1) public static class ProviderSecurity extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/", "/home").permitAll() .antMatchers("/admin/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
同様に、ConsumerSecurity 構成で、保護する必要がある URL パターンを指定します:
@Configuration @Order(2) public static class ConsumerSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/consumer/login").permitAll() .anyRequest().hasRole("BASE_USER") // Restrict all other URLs .and() ... }
制限することで特定の URL パターンにアクセスすると、アプリケーションに意図したセキュリティを適用できます。
以上がSpring Security でさまざまなアプリケーションセクションに複数の HTTP セキュリティ構成を構成する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。