JDBCRealmの利用

トップ > チップス > JDBCRealmの利用
2012-02-13, user

/tips/tomcat/user Tomcatのユーザ情報をデータベースから取得する方法です。デフォルトのメモリデータベースでは、ユーザ情報の変更の度にサーバの再起動が必要なため、複数のサイト運用に向きません。

**PostgreSQL 以下のパッケージが必要です。 :postgresql :postgresql-server :postgresql-jdbc

JDBCドライバを共有ライブラリフォルダにコピーします。 :cp /usr/share/java/postgresql-jdbc3.jar $\{TOMCAT_HOME\}/common/lib/

データベースユーザとデータベースを作成します。 : $ createuser lumber-tomcat # postgresで実行

pg_hba.confのhostを編集し、自マシンからの接続を受け付けるようにします。 : host all all 127.0.0.1/32 trust

: $ createdb -E UTF-8 lumber-tomcat # tomcatで実行

server.xmlを編集しJDBCRealmを登録します。 :

ユーザテーブルとロールテーブルを定義します。 :-- テーブルの定義 :CREATE TABLE tomcat_user (userid VARCHAR,passwd VARCHAR : ,PRIMARY KEY(userid)); :CREATE TABLE tomcat_role (id SERIAL,userid VARCHAR,role VARCHAR : ,FOREIGN KEY (userid) REFERENCES tomcat_user (userid)); :-- ユーザを追加する :INSERT INTO tomcat_user VALUES('admin','admin'); :-- ロールと関連付ける :INSERT INTO tomcat_role (userid,role) VALUES('admin','admin'); :INSERT INTO tomcat_role (userid,role) VALUES('admin','manager'); :INSERT INTO tomcat_role (userid,role) VALUES('admin','acornSnap');

>この後、外部プログラムを利用してこのデータベースのメンテナンスを行うためには、いくつかの設定が必要です。詳細は{link:/tips/linux/postgresql}を参照のこと。

**HSQLDB(非推奨) ※サーバモードで立ち上げが必要なので面倒です。 「$\{TOMCAT_HOME\}/common/lib/」にhsqldb.jarをコピー。

サーバモードで起動する。{strong:起動、停止スクリプトが欲しい} :HSQLDB_HOME=$\{TOMCAT_HOME\}/common/lib/hslqdb.jar :cd :$\{JAVA_HOME\}/bin/java -cp $\{HSQLDB_HOME\} org.hsqldb.Server \ : -database.0 database/tomcat -dbname.0 tomcat

ユーザテーブルとロールテーブルを作成する。

:-- テーブルの定義 :CREATE TABLE tomcat_user (userid VARCHAR,passwd VARCHAR); :CREATE TABLE tomcat_role (userid VARCHAR,role VARCHAR); :-- ユーザを追加する :INSERT INTO tomcat_user VALUES('admin','admin'); :-- ロールと関連付ける :INSERT INTO tomcat_role VALUES('admin','admin'); :INSERT INTO tomcat_role VALUES('admin','manager'); :INSERT INTO tomcat_role VALUES('admin','acornSnap');

conf/server.xmlを以下のように編集し、JDBCRealmを有効にする。

: : : : :

参考URL: {link:http://www.atmarkit.co.jp/fjava/javatips/058container009.html}

この記事は役に立ちましたか?