Rainbow Planet (GT×IT×SP×SA)

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

01_IT技術 (Technology)

サーバサイドJava(JSP&サーブレット)のFORM認証を用いたログイン画面の開発

投稿日:2019年12月17日 更新日:

(0)目次&概説

(1) サーバー側JavaのFORM認証
 (1-1) 認証の種類
 (1-2) FORM認証の特徴
 (1-3) FORM認証の実装概要
(2) FORM認証の実装手順
 (2-1) web.xmlの準備
 (2-2) ユーザー情報ファイルの準備
 (2-3) ログインページの実装
 (2-4) ログインエラーページの実装
(3) エラー事象の解説
 (3-1) 404エラー
 (3-2) ログインボタンを2回押さないとログイン不可

(1) サーバー側JavaのFORM認証

(1-1) 認証の種類

認証には下記の方式があります。その中でも「フォーム認証」が最も良く利用される方法になります。
・基本認証(BASIC)
・フォーム認証(FORM)
・ダイジェスト認証

・クライアント証明書認証

それぞれの認証方式の比較を次ぎに示します。

(図1)

認証方式 暗号化 セッションID HTTP仕様(RFC2617)での存在有無
基本認証 なし
(Base64平文)
なし
(ブラウザにて認証情報管理=ブラウザを閉じると終了する)
あり
(httpで定義あり)
フォーム認証 なし あり なし
(それぞれのアプリで要実装)
ダイジェスト認証 あり
(MD5ハッシュ関数)
なし
(ブラウザにて認証情報管理=ブラウザを閉じると終了する)
あり
(httpで定義あり)

また各方式の原理/特徴は下記の通りです。
(表2)

認証方式 原理/特徴
基本認証 ・利用者がユーザID/パスワードを入力して、サーバー側で認証を行う
・サーバー側でユーザID/パスワードを設定し、それをメール等でユーザに通知
・Base64でエンコードしているため、Base64でデコードすれば盗聴されるリスクがある
・ほぼ全てのWebサーバ&ブラウザに対応している
・ログアウトの機能がない(認証を削除するためにはブラウザを終了する必要ある)
 →※セッション管理が出来ない
・平文のテキストでパスワード等が送られるため、セキュリティが弱い
 →用途としては利用者が限定された内部的なwebサービス等に限定される
フォーム認証 ・HTMLで作られたフォーム画面からIDとパスワードを入力して認証を行う方式です。
・利用者がユーザID/パスワードを入力して、サーバー側で認証を行う
・認証が通るとセッションIDを発行してログイン管理を行う
 →一般公開されているwebサービスでも使われている方式
・認証の範囲指定が行えるため、SSOなども可能。
・問題点として、パスワードが平文で送られる点が挙げられる
ダイジェスト認証 ・盗聴防止のため、ユーザー名とパスワードをMD5(ハッシュ関数)で送る

(図1)基本認証のイメージ図

目次にもどる

(1-2) FORM認証の特徴

Form認証の特徴として、ルールの範囲内でログイン画面のレイアウトを自由に配置する事ができます。認証のおおまかな流れは下記の通りです。

(図2)

①リクエスト送付
クライアント⇒サーバへリクエストを送付します。

②認証の要否チェック
サーバにて認証が必要かをチェックします。認証不要の場合は要求ページを表示します。

③認証の済チェック
サーバにて認証済みかをチェックします。
(a) 認証済みの場合 → 要求ページを表示

(b) 認証未済みの場合 → ログインページに遷移

④ログインページの表示
クライアントにてログインの実施します。
(a) 成功の場合 → 要求ページを表示

(b) 失敗の場合 → 再度ログインページに遷移

目次にもどる

(1-3) FORM認証の実装概要

(1-3-1) config系ファイルの設定全体像
(図3)

(1-3-2) フォーム実装&画面遷移イメージ
(図4)

目次にもどる

(2) FORM認証の実装手順

申し訳ありませんが、この続き(メイン部分)は有料(100円)とさせてください。理由は技術検証に使うレンタルサーバの維持費用など、ブログ運営のための費用を確保し、より良質な記事を提供するためです。価格は設定できる最低額(100円)にしたので、ちょっとした投げ銭程度に思って頂けると嬉しいです。

Adsense審査用広告コード


Adsense審査用広告コード


-01_IT技術 (Technology)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

日立JP1をLinuxサーバにインストールする手順

JP1評価版(ジョブスケジューラ)インストール簡易手順書です。 (0)目次 (1) 必要な資産の入手 (2) インストールの事前準備 (3) インストーラーの操作#1 (4) インストール後のセットア …

ディープラーニング入門でニューラルネットワークを用いてAND回路を学習させるプログラムをJavaで作成

ニューラルネットワークでAND回路を学習させるJavaプログラムを作成したので、その解説を行います。 (0)目次&概説 (1) ニューラルネットワークの概要  (1-1) ニューラルネットワークとは? …

ドメインと名前解決およびドメインの運営の仕組みについて

(0)目次&概説 (1) ドメインと名前解決  (1-1) 名前解決とは?  (1-2) DNSサーバの階層  (1-3) DNSサーバの名前解決の流れ (2) ドメインの運営とビジネスの仕組み  ( …

VBAによる郵便番号の正規表現マッチ確認関数&置換関数の作成

(0)目次&概説 (1) 正規表現とは (2) 正規表現はどのような場面で利用される? (3) VBAによる正規表現の簡易チェックツール  (3-1) 郵便番号を抽出したい  (3-2) 正規表現が正 …

SQL Developer接続エラーへの対処(ORA-12514, ORA-12505)

SQL Developer接続エラーへの対処 SQL Developerを起動してSYSTEMユーザで接続する際に発生した、下記2つのエラーの対処法について記載します。 エラー#1:ORA-12514 …

Top