カテゴリ: Spring認証(Spring Security) 更新日: 2026/02/04

Spring Securityの設定ファイルとは?(application.properties, application.yml)初心者向けにやさしく解説

Spring Securityの設定ファイルとは?(application.properties, application.yml)
Spring Securityの設定ファイルとは?(application.properties, application.yml)

新人と先輩の会話形式で理解しよう

新人

「Spring Securityってよく聞きますけど、実際には何をするものなんですか?」

先輩

「Spring Securityは、Webアプリケーションにログイン認証やアクセス制御といったセキュリティ機能を簡単に追加できるフレームワークだよ。」

新人

「なるほど。じゃあその設定はどうやって行うんですか?コードだけじゃなくて、設定ファイルでもできるんですか?」

先輩

「もちろん。application.propertiesapplication.ymlといった設定ファイルを使って、Spring Securityの動作をカスタマイズすることができるよ。」

新人

「その違いとかも知りたいです!それと、GradleやPleiades環境でのやり方も気になります。」

先輩

「それじゃあ、順番にSpring Securityの基本から説明していこう。」

1. Spring Securityとは何か

1. Spring Securityとは何か
1. Spring Securityとは何か

Spring Securityは、Javaで作るWebアプリケーションに認証や認可などのセキュリティ機能を簡単に追加できるSpring Frameworkのサブプロジェクトです。特に、ログインフォームの作成や、ユーザーごとのアクセス制限などを簡単に実現できる点が大きなメリットです。

例えば、Spring MVCアプリケーションで、管理者だけがアクセスできるページを作りたい場合、Spring Securityを導入することで、わずかな設定でその制御ができるようになります。

また、Spring Securityはセッション管理やCSRF対策、パスワードのハッシュ化処理なども自動で行ってくれるため、初心者でもセキュアなアプリケーションを構築しやすくなっています。

Pleiades環境でSpring Securityを使うには、まずPleiadesでプロジェクトを作成し、「Spring Security」にチェックを入れて依存関係を追加します。MavenではなくGradleを使用するので、依存関係も自動的にbuild.gradleに追加されます。

2. Spring Securityの設定がなぜ必要なのか

2. Spring Securityの設定がなぜ必要なのか
2. Spring Securityの設定がなぜ必要なのか

Spring Securityは、初期状態でもある程度のセキュリティ機能が有効になっていますが、実際の開発では細かい挙動を自分で調整する必要があります。そのときに活躍するのがapplication.propertiesapplication.ymlといった「設定ファイル」です。

例えば、ログインページのURLを変更したい、ログイン失敗時の遷移先を指定したい、ログアウト後の遷移先を設定したい、といった要望に対して、Javaコードではなく設定ファイルで記述することで簡単に対応できます。

設定ファイルの一例を見てみましょう。application.propertiesを使った場合、以下のように設定できます。


spring.security.user.name=admin
spring.security.user.password=password
spring.security.user.roles=USER

同じ内容をapplication.ymlで記述すると、次のようになります。


spring:
  security:
    user:
      name: admin
      password: password
      roles: USER

このように、Spring Securityではログインユーザーの情報やアクセス制御の設定などをプロパティファイルで定義できます。これにより、Javaコードを大きく変更することなく、柔軟にセキュリティの挙動を変更できるのです。

特にチーム開発や設定の外部化が必要なプロジェクトでは、application.propertiesやapplication.ymlによる設定が不可欠です。

Spring Securityの設定ファイルを活用することで、開発効率の向上だけでなく、保守性や可読性の高いプロジェクトを構築できます。

3. application.propertiesとapplication.ymlの違いと特徴

3. application.propertiesとapplication.ymlの違いと特徴
3. application.propertiesとapplication.ymlの違いと特徴

application.propertiesapplication.ymlは、どちらもSpring SecurityをはじめとしたSpringアプリケーション全体の設定を記述できるファイルです。どちらを使っても基本的な機能に違いはありませんが、記述のスタイルや構造に違いがあります。

application.propertiesはキーと値を「=」でつなぐ形式で、シンプルで分かりやすく、設定内容が少ない場合に向いています。一方、application.ymlはインデントによって階層を表現するYAML形式を使い、構造化された設定を記述しやすい特徴があります。

たとえば、同じ設定を両方の形式で記述した場合は次のようになります。


spring.security.user.name=admin
spring.security.user.password=pass123
spring.security.user.roles=USER

spring:
  security:
    user:
      name: admin
      password: pass123
      roles: USER

application.ymlの方が構造が見やすく、複雑な設定を管理しやすいです。しかし、インデントのミスによりエラーが発生しやすいため、初心者にはapplication.propertiesの方が扱いやすい場合もあります。

プロジェクトの規模やチームのコーディング規約に応じて、どちらか一方に統一するのが一般的です。

4. Spring Securityでの基本的な設定例

4. Spring Securityでの基本的な設定例
4. Spring Securityでの基本的な設定例

ここでは、Spring Securityの基本的な設定をapplication.propertiesapplication.ymlの両方で紹介します。

例えば、ログインページのURLやログアウトの遷移先を設定したい場合、次のように記述します。

application.propertiesでの設定例


server.port=8080
spring.security.user.name=user1
spring.security.user.password=secret
spring.security.user.roles=ADMIN

# カスタムログインページの設定
spring.security.form-login.login-page=/login

# ログアウト後の遷移先
spring.security.logout.success-url=/login?logout

application.ymlでの設定例


server:
  port: 8080

spring:
  security:
    user:
      name: user1
      password: secret
      roles: ADMIN
    form-login:
      login-page: /login
    logout:
      success-url: /login?logout

このように設定ファイルに記述することで、Javaのクラスファイルを修正することなく、ログイン画面や認証処理の挙動を変更できます。

特にSpring MVCと@Controllerを使っているアプリケーションでは、セキュリティ関連の設定を外部ファイルにまとめることで、ソースコードの可読性や保守性が大きく向上します。

また、Pleiadesで作成したプロジェクトでは、設定ファイルに変更を加えたあとに「プロジェクトをクリーンして再実行」することで、反映を確認できます。

5. プロジェクトのどこに設定ファイルを置けばよいか

5. プロジェクトのどこに設定ファイルを置けばよいか
5. プロジェクトのどこに設定ファイルを置けばよいか

Spring Bootで構成されたプロジェクトでは、設定ファイルであるapplication.propertiesapplication.ymlは、プロジェクト内のsrc/main/resourcesフォルダに配置するのが一般的です。

PleiadesでSpringプロジェクトを作成した場合も、同じようにsrc/main/resourcesの中に自動で空のapplication.propertiesファイルが生成されることがあります。もし存在しない場合は、自分でそのディレクトリに作成しましょう。

具体的には、Pleiadesのプロジェクトエクスプローラーから次の手順で確認・作成できます。

  • プロジェクト名を右クリック
  • 「新規」→「ファイル」を選択
  • 名前をapplication.propertiesまたはapplication.ymlにして、場所をsrc/main/resourcesに指定

設定ファイルを正しく配置しておかないと、Spring Bootが読み込めずにデフォルト設定が適用されてしまうので注意しましょう。

また、ファイル名や拡張子のスペルミスもありがちなトラブルの原因です。特に.yml.yamlの違いにも注意してください。Spring Bootではどちらも読み込まれますが、プロジェクト内で統一するのが望ましいです。

Pleiadesでは、設定ファイルの内容が正しく反映されているかを確認するために、コンソールログに出力される情報をチェックするのも有効です。設定にエラーがある場合は、アプリケーション起動時にエラーメッセージが表示されるため、すぐに気付くことができます。

6. Spring Security設定ファイルでよく使うプロパティ一覧

6. Spring Security設定ファイルでよく使うプロパティ一覧
6. Spring Security設定ファイルでよく使うプロパティ一覧

Spring Securityの設定ファイルには、さまざまなプロパティを記述することができますが、初心者の方が最初に覚えておくべき基本的で頻繁に使用されるプロパティを紹介します。これらはapplication.propertiesapplication.ymlどちらでも記述できます。

  • spring.security.user.name:デフォルトのログインユーザー名
  • spring.security.user.password:ログインパスワード
  • spring.security.user.roles:ユーザーのロール(権限)
  • spring.security.form-login.login-page:カスタムログインページのURL
  • spring.security.logout.success-url:ログアウト後の遷移先URL
  • spring.security.oauth2.client.registration:OAuth2ログイン設定(GoogleやGitHub連携時)

これらのプロパティは、ログイン画面の設定やユーザー認証の基本を理解するために非常に重要です。特にlogin-pagelogout.success-urlはカスタマイズしたいポイントになるため、最初に学んでおくと実践的です。

7. 設定ファイルのエラー例とその対処法

7. 設定ファイルのエラー例とその対処法
7. 設定ファイルのエラー例とその対処法

Spring Securityの設定ファイルを使う際に、初心者がよく遭遇する設定ミスやエラーと、その対処法について解説します。

(1)YAMLのインデントミス

application.ymlでは、インデントが正しくないとアプリケーションが起動しないことがあります。

例えば、以下のような間違った設定があります。


spring:
security:
  user:
    name: admin
    password: 1234

これはsecurity:の前にスペースがなく、階層構造が崩れているためエラーになります。正しくは以下のように書きます。


spring:
  security:
    user:
      name: admin
      password: 1234

(2)プロパティ名のスペルミス

スペルミスも非常に多いトラブルの原因です。たとえば、以下のような設定は誤りです。


spring.security.usr.name=admin

このようにuserusrと書いてしまうと、Spring Bootはその設定を無視してしまいます。コンソールログにも警告が表示されない場合もあるため、注意が必要です。

(3)プロファイルの読み込み忘れ

application-dev.ymlのようなプロファイルごとの設定ファイルを使用している場合、application.yml側で適切にプロファイルを指定しておかないと、設定が読み込まれません。


spring:
  profiles:
    active: dev

このように明示的にdevプロファイルを指定しないと、application-dev.ymlの内容が反映されないため注意が必要です。

(4)パスワードをハッシュ化し忘れる

Spring Securityは、{noop}を指定しないと平文パスワードを受け付けません。以下のように設定していないとログインに失敗します。


spring.security.user.password=password

上記のような場合、エラーメッセージに「There is no PasswordEncoder mapped for the id 'null'」と表示されます。正しくは以下のように設定します。


spring.security.user.password={noop}password

8. application.propertiesとapplication.ymlのどちらを選ぶべきか

8. application.propertiesとapplication.ymlのどちらを選ぶべきか
8. application.propertiesとapplication.ymlのどちらを選ぶべきか

Spring Securityの設定ファイルとしてapplication.propertiesapplication.ymlのどちらを使うべきかは、プロジェクトの目的やチームの方針によって異なります。

propertiesファイルが向いているケース

  • 設定項目が少なく、シンプルにしたいとき
  • 初心者や個人開発でインデントのルールを避けたいとき
  • テキストエディタで一括検索や置換が多い場合

ymlファイルが向いているケース

  • 設定項目が多く、階層構造を視覚的に整理したいとき
  • 設定をグループごとにまとめて見やすくしたいとき
  • チームで開発しており、構造を重視する方針があるとき

初心者がまず始めるならapplication.propertiesの方が扱いやすく、慣れてきたらapplication.ymlへ移行していくという流れも良い選択肢です。どちらか一方に統一しておけば、設定ミスや混乱も防げます。

Spring Security 設定ファイルは、アプリケーション全体のセキュリティの動作に影響する重要な役割を持っています。正しい形式で記述し、用途に応じて使い分けることで、より安全で効率的な開発が可能になります。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Spring Security(スプリングセキュリティー)とは、具体的にどのような機能を提供してくれるフレームワークなのですか?初心者にもわかりやすく教えてください。

Spring Securityは、Java言語で開発されるWebアプリケーションに対して、ログイン認証(本人確認)や認可(アクセス権限の管理)といった非常に重要なセキュリティ機能を簡単かつ確実に追加することができるSpring Frameworkのサブプロジェクトです。自分ですべてのセキュリティロジックをプログラミングするのは大変ですが、このフレームワークを使うことで、ログインフォームの自動生成や、特定のページへのアクセス制限、さらにはセッション管理やCSRF対策(クロスサイトリクエストフォージェリ対策)、パスワードの安全なハッシュ化処理といった高度なセキュリティ対策を、少ない手間でアプリケーションに組み込むことが可能になります。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Thymeleaf
Thymeleaf null判定の書き方!初心者向けにやさしく解説
New2
SpringのDB操作
Spring Data JPAの永続化コンテキストとは?1次キャッシュの基礎理解
New3
Thymeleaf
Thymeleaf null判定の基本と書き方まとめ|初心者向けテンプレート入門
New4
Thymeleaf
Thymeleaf th:classappendで動的クラス設定する方法を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Thymeleaf
Thymeleaf とは?初心者向けにThymeleafの基本を徹底解説
No.2
Java&Spring記事人気No2
Springの基本
Spring Bootの環境変数の設定方法をやさしく解説!初心者向けapplication.propertiesの使い方
No.3
Java&Spring記事人気No3
SpringのWeb開発(Spring MVC)
Spring Bootでの@GetMappingと@PostMappingの基本を完全解説!初心者でも理解できる使い方
No.4
Java&Spring記事人気No4
Spring認証(Spring Security)
Spring Securityの概要と仕組みを完全ガイド!初心者でもわかるセキュリティ対策
No.5
Java&Spring記事人気No5
SpringのAPI開発(REST & GraphQL)
REST APIの主要なHTTPメソッド(GET, POST, PUT, DELETE)を初心者向けにわかりやすく解説!
No.6
Java&Spring記事人気No6
Springの基本
Springの@Autowiredとは?依存性注入(DI)を初心者向けに解説
No.7
Java&Spring記事人気No7
SpringのWeb開発(Spring MVC)
Spring MVC入門(概要とアーキテクチャ)
No.8
Java&Spring記事人気No8
SpringのWeb開発(Spring MVC)
ループ処理(th:each)の基本を完全ガイド!Thymeafの繰り返し処理の使い方