Spring Boot セキュリティ関連

Spring Boot上でSpring SecurityのBasic認証を利用してみた

Spring Securityには、セキュリティ対策の基本機能として「認証」「認可」機能が含まれる。詳細は以下のサイトを参照のこと。
https://terasolunaorg.github.io/guideline/5.1.0.RELEASE/ja/Security/SpringSecurity.html#springsecurityfunctionalities

今回は、Spring Securityを利用して、ユーザー名・パスワードによる認証を行う「Basic認証」を行うサンプルプログラムを作成してみたので、共有する。

前提条件

下記記事の実装が完了していること。

Spring Bootで全角チェック処理を行う独自アノテーションを作成してみたSpring Bootの独自アノテーションで、特定のフィールドに対するチェック処理も実装することができる。今回は、特定のフィールドの全角...

サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムである。

build.gradleの内容は以下の通りで、「spring-boot-starter-security」をライブラリに追加している。

なお、前提条件のプログラムからbuild.gradleのみを修正した場合、以下のユーザー認証画面が表示される。
SpringSecurityデフォルト認証画面

また、application.ymlの内容は以下の通りで、「spring.security.user.name」にユーザー名を、「spring.security.user.password」にパスワードを指定している。ここで定義した、ユーザー名「user」・パスワード「pass」を指定した場合のみ、Basic認証のログインができるようになっている。

さらに、以下のWebSecurityConfigurerAdapterクラスを継承したクラスで、Spring Securityの認証方法の定義を行っている。この設定で、初期表示画面を表示した場合に、Basic認証のログイン画面が表示されるようになっている。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-security-basic/demo

サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下のBasic認証画面が表示される
サンプルプログラムの実行結果_1

2) application.ymlに定義したユーザーと違うユーザー名またはパスワードを入力し、「OK」ボタンを押下
サンプルプログラムの実行結果_2

3) 以下のように、ログインができず、再度Basic認証の画面が表示されることが確認できる
サンプルプログラムの実行結果_3

4) application.ymlに定義したユーザーと同じユーザー名またはパスワードを入力し、「OK」ボタンを押下
サンプルプログラムの実行結果_4

5) 以下のように、ログインでき、検索画面が表示されることが確認できるので、「閉じる」ボタンを押下
サンプルプログラムの実行結果_5

6) 画面を閉じてよいかの確認画面が表示されるので、「はい」ボタンを押下
サンプルプログラムの実行結果_6

7) 「http:// (ホスト名):(ポート番号)」とアクセスすると、再度Basic認証画面が表示される
サンプルプログラムの実行結果_7

要点まとめ

  • Spring Securityには、セキュリティ対策の基本機能として「認証」「認可」機能が含まれる。
  • Spring Securityを利用するには、「spring-boot-starter-security」のライブラリを追加し、WebSecurityConfigurerAdapterクラスを継承したクラスで、Spring Securityの認証方法の定義を行う。
  • Spring Securityの認証で、固定のユーザー・パスワードの場合のみ認証できるようにするには、application.yml(またはapplication.properties)の「spring.security.user.name」「spring.security.user.password」を指定する。