🕌

Springbootベースで始まるSpring Security(1)

2022/11/07に公開

初めまして、Junior Back-end Developer、SIMOKITAZAWAです。
色々と足りないところがあるかと思いますがよろしくお願い致します。

私がZENNを始めた理由は、

  1. 私が勉強したことをまとめたい
  2. 勉強の内容を共有して一緒に成長したい
  3. 私が間違って理解している部分について先輩たちに教えてもらいたい

このような理由で始めることになりました。
たくさんの教えをお願いします。

Spring Security 始める

使う前にSettingしましょう。私が使っているIDEAはIntelliJ IDEAです。

Java11、Mevenにします。(Gradle)でも良いです。

Spring Boot version 2.7.5
Spring Web、Lombokのみ追加します。

その後、簡単にHomeControllerを作って@GetMappingで"hi spring security"をprintしてみましょう。

localhost:8080に接続したらすぐ文字が見えますね。これは、誰でもこのページにはアクセスできることを意味します。認証を受けなくてもアクセスできるため、セキュリティに脆弱な状態です。
ここでSpring Securityのdependencyをpoxm.xmlで追加してみましょう。

Spring Boot version 2.7.5が最新Versionなので、Spring Securityも最新Versionになります。
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter
Versionによって、後で設定するのが異なるなので参考にしてください。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

* 上記の通りにdependencyするとSpring Securityの最新Versionがダウンロードされますが、もしSpring Security5.7.0-M2 Versionからはセキュリティ設定方法が変わりましたのでご参考ください。

追加して、また同じlocalhost:8080に接続してみましょう、そうしたら前と異なる場面が見えます。

このようにログインが必要な場面が出て

IntelliJにはPasswordが見えます。このログインサイトはSpring Securityが作ってくれたサイトでございます。ログインしてみると

また、前と同じようにpageが見えます。

まとめる

SpringSecurityにdependencyを追加する際に起こるもの。

  1. サーバが起動すると、SpringSecurityの初期化およびセキュリティ設定が行われる。
  2. 別途の設定や実装がなくても、基本的なウェブセキュリティ機能がシステムに連動して作動する。
  3. すべての要請は認証されてからアクセスが可能である。
  4. 認証方式はform login方式とhttpBasic login方式を提供する。
  5. 基本ログインページを提供する。
  6. 基本アカウント1つを提供する。
    username : user
    password:ランダム文字列

次はアカウント追加、権限追加、db連動など
基本的なセキュリティ機能の他に、システムで必要とされる細部的で追加的ななセキュリティ機能について勉強してみましょう。

Discussion