ひとり疑似プロジェクトでスキルを高める(実装編 ログイン機能 -1-))
さてさて、思い立ってから約1ヶ月半。 本来の目的の実装周りにようやく到着してきました。。。。
ではまず、手始めにログイン周りの実装を行いたいと思います。
ここで検討すべきなのは、Java EEにおける認証機能。 とりあえず調べるとレルムというものを用いて行なうようです。
参考にしたの
WEBページ
たかがレルムされどレルム GlassFish で始める詳細 JDBC レルム | 寺田 佳央 - Yoshio Terada
Javaの道:Tomcat(13.JDBCレルムによるFORM認証)
GlassFishのJDBCレルムを利用する - Programming Studio
OTN Japan - はじめてのOracle9iデータベース:サンプルスキーマを作ってみよう
本
Java EE 7徹底入門: 標準Javaフレームワークによる高信頼性Webシステムの構築
概要
Java EE では、レルムというものに格納されたユーザID/パスワード グループ情報を参照して認証を行なうそうです。
さらに、WEBで公開された各種リソースに対して、 グループごとにアクセス権を設定してセキュリティを担保します。 これを認可といいます。
また、レルムは抽象的なものであり、ファイルに情報を格納することもあれば DBやLDAPを用いることも出来るようです。
今回はDBに情報を待たせたいと思います。
Java EE 環境準備
今回は、GlassFish + NetBeans8.1 + Mavenで開発環境を整えます。
まずは、NetBeansを立ち上げて、 「新規プロジェクト」→「Maven」→「Webアプリケーション」と選択。 サーバはflassFish4.1、Java EEは7を選択。
なんか色々ダウンロードしてきて、こんな感じにプロジェクトが作られました。 (実はあまりMavenしらない人)
色々な記事で、以下の部分を次のように書き換えてたけどいるのかなぁ。 今回webだけしか使わないからいらないかも、とりあえずこのまま。
「
画面のハリボテ準備
まずは、ログイン画面とログイン画面後のTOP画面を用意しておきましょう。
「新規」→「その他」→「JavaServer Faces/JSFページ」を選択して、 login.xhtmlを作成します。
で、このページのレイアウトを編集。
つぎに、このページに対する管理Beanも作成しておきます。 「新規」→「その他」→「JavaServer Faces/JSF管理対象Beans」を選択して、 loginBeans.javaを作成します。
画像とは違い、実際はスコープをviewスコープにしました。
でココらへんで一回起動・・・あれ?起動しない。。。。\(^o^)/
知らべてみると、そもそもGlassFishがプロジェクトを認識してくれていない・・・ どうやらパスに全角文字が入っているとダメみたいだ、なのでパス変更
でも動かない\(^o^)/オワタ
NetBeansからだと、実行時のエラーが全くわからないため、 ビルドされたwarを直接glassfishの管理コンソールから、 デプロイしてみた。するとこんなエラーが。。。
あ、loginBeans.javaをSerializableに してなくてエラーになっていたようです。。。
で、気を取り直して実行したら、表示されました。
めでたしめで・・(もうちっとだけ続きます)
DB設定
では今度はユーザ情報を格納するためのDBを用意します。 今回作成するテーブル構成はこんな感じ。
Java EEの認証仕様に合わせて、グループテーブルを追加しています。
参考サイトではJava DBでしたが、 今回はOracle Database Express Editionを使用したいと思います。
まずは、表領域と接続ユーザを作成します。
表領域
create TABLESPACE study_support datafile 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\study_support' size 10m;
接続ユーザ
CREATE USER study_con IDENTIFIED BY admin DEFAULT TABLESPACE "STUDY_SUPPORT" TEMPORARY TABLESPACE "TEMP";
この後、connect,Resourcesロール + create Table権限(※)を与えました。
※:Resourcesロールを付与すればテーブル作成出来ると思ってたのに謎
最後にこんなテーブルを用意します。
GlassFishの設定
あとは、レルムの設定です。 まずはglassfishの管理コンソールに入ります。 http://localhost:4848/common/index.jsf
server-config security realmとたどり Newから新規作成 ページに移ります。
で以下のような設定を行ないます。
ここまでで、環境的な設定は終わり。 次回は、実際に実装してみて動作するか確認していきます。