web-dev-qa-db-ja.com

春の@EnableWebSecurityの使用は何ですか

spring docs に従って

WebSecurityConfigurerベースクラスを拡張し、個々のメソッドをオーバーライドすることにより、任意のWebSecurityConfigurerAdapterまたはそれ以上でSpring Security構成を定義するには、この注釈を@Configurationクラスに追加します。

または、この@EnableWebSecurityが示すように、プロジェクトでSpringSecurityを有効にするために使用されます。

しかし、私の質問は、クラスに@EnableWebSecurityという注釈を付けなくても、アプリケーションがユーザー名とパスワードの入力を求めるということです(デフォルトの動作)。

したがって、@EnableWebSecurityを使用した場合と@EnableWebSecurityを使用しない場合で同じ動作を受け取ります。

誰かがこのアノテーションが何のためにあるのか正確に説明できますか?

24
Mehraj Malik

@EnableWebSecurityはマーカー注釈です。これにより、Springは@Configuration、したがって@Componentを検出し、自動的にクラスをグローバルWebSecurityに適用できます。

クラスに@EnableWebSecurityという注釈を付けない場合でも、アプリケーションはユーザー名とパスワードの入力を求めます。

はい、それはデフォルトの動作です。クラスパスを見ると、その注釈でマークされた他のクラスを見つけることができます(依存関係によって異なります)。

  • SpringBootWebSecurityConfiguration;
  • FallbackWebSecurityAutoConfiguration;
  • WebMvcSecurityConfiguration

それらを慎重に検討し、必要な構成をオフにするか、その動作をオーバーライドします。

24
Andrew Tobilko

Spring Boot Reference Guide で詳しく説明されています。 @EnableWebSecurityで検索できる場合:

デフォルトのWebアプリケーションセキュリティ構成を完全にオフにするには、@EnableWebSecurityを使用してBeanを追加できます(これにより、認証マネージャー構成またはアクチュエーターのセキュリティが無効になることはありません)。カスタマイズするには、通常、外部プロパティとWebSecurityConfigurerAdapterタイプのBeanを使用します(たとえば、フォームベースのログインを追加するため)。

...

@EnableWebSecurityを追加し、アクチュエータセキュリティも無効にすると、カスタムWebSecurityConfigurerAdapterを追加しない限り、アプリケーション全体のデフォルトのフォームベースのログインが取得されます。

...

アプリケーションの任意の場所で@Configuration@EnableWebSecurityを定義すると、Spring Bootでデフォルトのwebappセキュリティ設定がオフになります(ただし、アクチュエーターのセキュリティは有効のままにします)。デフォルトを調整するには、security.*(使用可能な設定の詳細についてはSecurityPropertiesを参照)でプロパティを設定し、共通アプリケーションプロパティのセキュリティセクションを設定してください。

どうやら、デフォルトのWebアプリケーションのセキュリティ設定をオフにして独自の設定を追加することです。

13
Sanghyun Lee