Java

【Spring Security】デフォルトのログインページを無効化する方法

この記事で分かること

  • Spring boot (Spring Security)のページにアクセスした時に表示されるログインページを無効化する方法
  • Spring boot 3.x系 (Spring Security 6.x系)でのConfiguration設定

この記事では、Spring boot 3以降でSpring Securityを有効にした際に表示されるデフォルトのログインページを無効化する方法について解説します。

Spring SecurityのAutoConfigurationを有効にした場合、各Controllerのエントリーポイントにアクセスすると、デフォルトのログインページが表示される様になります。
デフォルトのログインページではなく、独自に実装した認証方法を使いたい場合はログインページを無効化する必要がありますので、そのConfigurationファイルの書き方を説明します。

Spring boot 2.x系 (Spring Security 5.x系) と Spring boot 3.x系 (Spring Security 6.x系)ではConfiguration方法が変わっており、具体的には、WebSecurityConfigurerAdapter を継承する方法から、SecurityFilterChain を使ってFilterを登録する方法に変更になっています。

SecurityFilterChain を使って登録する新しいやり方についてサンプルコードで解説します。

認証ページを無効化する設定

@Configuration を付加したConfiguration用のクラスで@Bean を使ってSecurityFilterChainを定義します。

ログインページを無効化するのに必要な最低限の記述のみ記載しています。

セキュリティフィルターには、他にも設定可能なフィルターが多数定義されています。以下のリンクに一覧があります。
https://spring.pleiades.io/spring-security/reference/servlet/architecture.html#servlet-security-filters

以下サンプルコードになります。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.web.SecurityFilterChain;

@Configuration
@EnableWebSecurity
@EnableMethodSecurity
public class SecurityConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http.authorizeHttpRequests(customizer -> customizer
                .requestMatchers("/api/auth").authenticated() // /api/authは認証が必要なページ
                .requestMatchers("/api/**").permitAll() // /api以下はすべて許可
                .anyRequest().denyAll()); // その他のリクエストはすべて拒否
        return http.build();
    }
}

まとめ

最後にこの記事の内容をまとめます。

要点

  • Spring boot 3 (Spring Security 6)以降は、SecurityFilterChainを使って認証・認可の設定を行う。
  • Spring Security6以降では、WebSecurityConfigurerAdapterを使った設定方法は非推奨

Spring Securityの設定方法は昔から複雑ですが、今回は必要最小限の方法のみ説明しました。

この方法でデフォルトの認証方法を無効化することが出来ますが、多くの場合WebページやAPIへのアクセスには独自の認証が必要になると思います。

作成するWebアプリケーションのセキュリティの重要性に応じて、適切なレベルの認証・認可機能を実装することは変わらず重要です。

それでは、少しでも参考になりましたら幸いです。

参考サイト

この記事は役に立ちましたか?

  • この記事を書いた人
アバター画像

ゴイチ

ソフトウェアエンジニア歴20年。 C/C++, C#, Java, Kotlinが得意で、組込系・スマホ・大規模なWebサービスなど幅広いプログラミング経験があります。 現在は某SNSの会社でWebエンジニアをしています。

-Java
-, ,