はじめに
本連載では「軽量フレームワーク(Lightweight Framework)」の中から注目株をピックアップし、その概略を紹介していこうと思います。第3回目となる今回は、前回に引き続きJavaの軽量フレームワーク「Apache Wicket」について説明していきます。
これまでの連載
- Javaで軽快に使える「軽量フレームワーク」特集~Apache Wicketで簡単Webアプリ作成(1)
- Javaで軽快に使える「軽量フレームワーク」特集~Apache Wicketで簡単Webアプリ作成(2)
前回、Wicketのさまざまな機能を利用してみました。Wicketがどんなフレームワークか、大まかなイメージはつかめたのではないかと思います。しかし、Wicketにはその他にもさまざまな機能が「拡張ライブラリ」として用意されています。これらを追加することにより、更に強力なフレームワークへと強化させていくことが可能です。
今回は、標準で付属する拡張ライブラリの中から、認証機能を追加する「wicket-auth-roles」を使い、ユーザー認証を行うアプリケーションを作成してみましょう。
対象読者
- Javaで手ごろなフレームワークを探している技術者
- 最近のフレームワークをごくざっと理解しておきたい方
- Web開発の手法がどうも気に入らない、と常々考えているJavaプログラマ
wicket-auth-rolesを利用する
拡張ライブラリは、Wicket本体にある「lib」フォルダの中にあります。先にWicketのプロジェクトを作成する際、この中にあるwicket-xxx.jarといったライブラリファイルをコピーして組み込んだのを思い出しましょう。ここには、その他にも多数のJarファイルがありました。これらが、Wicketの拡張ライブラリです。使いたいJarファイルだけをコピーしプロジェクトに追加することで、そのライブラリが使用可能になります。
ここでは、拡張ライブラリの中でも最も利用されることの多い「wicket-auth-roles」を使い、認証機能をアプリケーションに実装してみます。「lib」フォルダ内に「wicket-auth-roles-xxx.jar」というファイルとして用意されているので、それをプロジェクトのWEB-INF/lib
内にコピーすれば利用できます。
AuthAppプロジェクトの作成
では、今回も実際にWebアプリケーションを作成しながら、wicket-auth-rolesの機能について説明していくことにしましょう。今回は、新たに「AuthApp」というプロジェクトを作成し、これにwicket-auth-rolesの機能を組み込みます。
今回作成するWebアプリケーションは、いくつかのWebページとクラスを用意します。以下に、作成する内容について整理し、認証アプリケーションの全体的な構成を理解しておきましょう。
- アプリケーションクラス
- セッションクラス
- ログインページ
- ログアウトページ
- エラーページ
- USER権限ページ
- ADMIN権限ページ
通常、アプリケーションクラスはWebApplicationクラスを継承して作成しますが、wicket-auth-rolesによる認証を使う場合には「AuthenticatedWebApplication」というクラスを継承して作成します。これは認証に関する機能拡張をしたクラスで、これに用意されているメソッドをオーバーライドしていくことで、認証に必要な機能を用意します。
新たに登場するクラスです。wicket-auth-rolesによる認証では、セッションのためのクラスが必要になります。Wicketでは、セッションは通常WebSessionというクラスが用意されているのですが、wicket-auth-rolesを利用する場合にはそのサブクラス「AuthenticatedWebSession」を継承し、独自のセッションクラスを用意します。
ユーザー名とパスワードを入力しログインするためのページです。ログインページは、「SignInPage」というクラスとして用意されており、これを利用すると非常に簡単に作成できます。
ログアウトするためのページです。これも「SignOutPage」というクラスとして用意されているものをそのまま利用します。
アクセスに失敗した際にジャンプ先として指定するページです。アクセス権のないページにアクセスを試みたりするとここに飛ばされます。これ自体はごく普通のWebPageです。
USERというユーザーでログインした場合にのみアクセスが許可されるページを用意します。一般のユーザーがアクセスできるページ例です。
ADMINというユーザーでログインした場合にのみアクセスが許可されるページです。管理者権限のある人間だけが使えるページ例です。
これで、ユーザー認証の基本的なものはひととおりそろうでしょう。では、ここでAuthAppプロジェクトを作成しておいてください(プロジェクトの作成方法は第1回を参照)。