Webアプリ開発事始 第16回

安全な通信を考える(2)
~SSLを使ったユーザー認証サイトの構築
長谷川裕行
有限会社 手國堂

JSPのソース作成

ここまで準備が整ったら、JSPのソースファイルを作成します。既に述べたように、ユーザーIDとパスワードの入力を求め、認証されたらページを表示するという、至ってシンプルな構造です。


- キャッシュの禁止~head.jsp -

ブラウザがキャッシュを有効にしていると、キャッシュされた保護ページが表示されてしまう場合があります。そのため、保護するすべてのページの先頭でキャッシュを無効にしておかなければなりません。

そこでリスト5のようなJSPファイル(head.jsp)を作り、これをすべてのページの先頭で取り込むようにします。

リスト5:キャッシュを無効にする~head.jsp



- セッション情報の表示~showinfo.jsp -

ここでは、リスト6のようなセッション情報を表示するJSPファイルを用意し、セッションがどのように管理されるかを見ることにします。

このファイルは、セッション情報を表示したいファイル(index.jsp、whatsnew.jsp、logout.jsp)の最後に取り込みます。

リスト6:セッション情報の表示~showinfo.jsp



- トップページ~index.jsp -

保護された領域のトップページです。先頭でhead.jsp、最後尾でshowinfo.jspをincludeしています。

それ以外は通常のHTMLデータで、whatsnew.jspとlogout.jspへのリンクが設定されているだけです。

このページは保護されているため、アクセスするとログインページ(login.jsp)が表示されます。そこでユーザーが正しく認証されれば、このページが表示されます。

リスト7:トップページ~index.jsp



- 新着情報~whatsnew.jsp -

このページもログインしなければ参照できません。既に認証が終わっていれば、トップページ(index.jsp)からリンクをたどって表示できますが、ブラウザで直接このページのURLを指定した場合は、ログインページ(login.jsp)が表示されます。

index.jspと同じように、先頭でhead.jsp、最後尾でshowinfo.jspをincludeしています。

リスト8:新着情報~whatsnew.jsp



- ログインページ~login.jsp -


ここでも先頭でhead.jsp、最後尾でshowinfo.jspをincludeしています。

後は、FORMタグを使ってログイン用のテキストボックスとsubmitボタンを配したユーザーインターフェイスを作っています。

FORMタグのmethodオプションで“POST”、actionオプションで“j_security_check”を指定すれば、テキストボックスに入力された値がサーバーへ送られ、サーバー側でデータベースの値に基づいた認証が行われます。

リスト9:ログインページ~login.jsp

画面1:ログインページでユーザーIDとパスワードを入力する




- ログアウト処理~logout.jsp -

確立しているセッションは、sessionオブジェクトのinvalidateで無効にします。
 続いて

  response.sendRedirect("index.jsp");

としてトップページ(index.jsp)にリダイレクトしています。この時点では既にセッションは無効となっているので、再度ログインページ(login.jsp)が表示されます。

リスト10:ログアウト処理~logout.jsp



- エラー表示~error.jsp -

パスワードの入力ミスなどでログインできなかった場合に、このページが表示されます。単にエラー情報を表示しているだけです。

リスト11:エラー表示~error.jsp


SQLによるテーブル生成

create文を使えば、SQLでテーブルが生成できます。

リスト12は、Tomcatのドキュメントに記載されているMySqlのためのテーブル生成用SQLのソースです。データ型の表記はDBMSごとに異なっている場合が多いので、注意してください。

リスト12:ユーザー管理用テーブルを生成するためのSQL



トップページ
実行環境
Tomcatとデータベースの準備
セッション管理の準備
JSPのソース作成
キャッシュの禁止~head.jsp
セッション情報の表示~showinfo.jsp
トップページ~index.jsp
新着情報~whatsnew.jsp
ログインページ~login.jsp
ログアウト処理~logout.jsp
エラー表示~error.jsp
ApacheとIISでSSLを使うには
あとがき

Copyright © MESCIUS inc. All rights reserved.