spring docs に従って
WebSecurityConfigurer
ベースクラスを拡張し、個々のメソッドをオーバーライドすることにより、任意のWebSecurityConfigurerAdapter
またはそれ以上でSpring Security構成を定義するには、この注釈を@Configuration
クラスに追加します。
または、この@EnableWebSecurity
が示すように、プロジェクトでSpringSecurityを有効にするために使用されます。
しかし、私の質問は、クラスに@EnableWebSecurity
という注釈を付けなくても、アプリケーションがユーザー名とパスワードの入力を求めるということです(デフォルトの動作)。
したがって、@EnableWebSecurity
を使用した場合と@EnableWebSecurity
を使用しない場合で同じ動作を受け取ります。
誰かがこのアノテーションが何のためにあるのか正確に説明できますか?
@EnableWebSecurity
はマーカー注釈です。これにより、Springは@Configuration
、したがって@Component
を検出し、自動的にクラスをグローバルWebSecurity
に適用できます。
クラスに
@EnableWebSecurity
という注釈を付けない場合でも、アプリケーションはユーザー名とパスワードの入力を求めます。
はい、それはデフォルトの動作です。クラスパスを見ると、その注釈でマークされた他のクラスを見つけることができます(依存関係によって異なります)。
SpringBootWebSecurityConfiguration
;FallbackWebSecurityAutoConfiguration
;WebMvcSecurityConfiguration
。それらを慎重に検討し、必要な構成をオフにするか、その動作をオーバーライドします。
Spring Boot Reference Guide で詳しく説明されています。 @EnableWebSecurity
で検索できる場合:
デフォルトのWebアプリケーションセキュリティ構成を完全にオフにするには、
@EnableWebSecurity
を使用してBeanを追加できます(これにより、認証マネージャー構成またはアクチュエーターのセキュリティが無効になることはありません)。カスタマイズするには、通常、外部プロパティとWebSecurityConfigurerAdapter
タイプのBeanを使用します(たとえば、フォームベースのログインを追加するため)。...
@EnableWebSecurity
を追加し、アクチュエータセキュリティも無効にすると、カスタムWebSecurityConfigurerAdapter
を追加しない限り、アプリケーション全体のデフォルトのフォームベースのログインが取得されます。...
アプリケーションの任意の場所で
@Configuration
で@EnableWebSecurity
を定義すると、Spring Bootでデフォルトのwebappセキュリティ設定がオフになります(ただし、アクチュエーターのセキュリティは有効のままにします)。デフォルトを調整するには、security.*
(使用可能な設定の詳細についてはSecurityProperties
を参照)でプロパティを設定し、共通アプリケーションプロパティのセキュリティセクションを設定してください。
どうやら、デフォルトのWebアプリケーションのセキュリティ設定をオフにして独自の設定を追加することです。