実践 Java「Spring Security認証サンプル(インメモリ)」

java

この記事の概要

新規Springスターターで「Spring Security」を選択すると簡単にログイン画面を作成することができます。このサンプルプログラムを示します。

プロジェクトの作成

【操作】
1.プロジェクトエクスプローラ > Ctrl+n > 新規プロジェクト画面が表示
2.Spring Boot > Springスターター・プロジェクト > 次へ

【操作】
「Springスターター・プロジェクト」画面にて、名前等を任意に入力(デフォルトのままでもOK)し、「次へ」ボタンを押下

ログイン画面を作成するが、後ほど、情報をDBから取得するようにバージョンアップしたいのでDB接続まわりについても選択する。

【操作】
以下の6つを選択し、「次へ」ボタン押下

選択内容説明
Spring Boot DevToolsリフレッシュサイクルの高速化
MyBatis FrameworkO/Rマッパーの一つ。SQL文とJavaオブジェクトを紐付けるイメージ
MySQL Driver MySQLのドライバー
Spring Securityデフォルトのログイン画面の提供、パスワードの暗号化
Thymeleafタイムリーフというテンプレートエンジン
Spring WebWeb機能ならこれ

【操作】
「完了」ボタンを押下
少し時間がかかりますが、プロジェクトが作成される

実装

上記の2クラス、1つのhtmlでインメモリのログイン機能を動作させることができます。
これらについて説明します。

ファイル名(クラス)説明
SecurityConfクラスには、@EnableWebSecurity
■configure(AuthenticationManagerBuilder auth)
ユーザの認証方式、その内容をチェーンメソッドで設定するイメージ
 .inMemoryAuthentication()
     インメモリ方式、他に、DB方式、LDAP
 .withUser(“user”)
     ユーザ名はuser
 .password(passwordEncoder().encode(“password”))
     エンコード(ハッシュ化)したパスワードで認証、内容はpassword
 .roles(“USER”)
     ロールはUSER
■configure(HttpSecurity http)
Webアプリのリソースへのアクセス制御の対象と画面
 .authorizeRequests()
 .anyRequest().authenticated()
 .and()
 .formLogin
    デフォルトのログイン画面を使用する
■PasswordEncoder passwordEncoder()
平文のパスワードをハッシュ化するためのメソッド
 return new BCryptPasswordEncoder()
RootController@RequestMapping(“/”)で戻り値に、「 NewFile.html 」を指定している
NewFile.html@RequestMappingで指定したファイル名
※ログイン成功時に遷移する画面

■SecurityConf

■RootController

■NewFile.html

実行

【操作】
1.プロジェクトエクスプローラで対象のプロジェクトを選択
2.右クリック > 実行 Spring Bootアプリケーション

上記のようにアプリが起動したら、ブラウザからアクセスする
【操作】
1.「http://localhost:8080/」
2.あとは以下の絵の通りです。
   ログイン画面が表示されるので、ソースにベタ書きしているユーザ名、パスワードと
   合致すれば、認証OKで設定したhtml画面が表示される。
   合致しなければ再入力を促されます。

タイトルとURLをコピーしました