これはJDBCレルムの設定方法の例です。 この例ではMySQL JDBC driver を使用しま
した。
1. データベースを作成します。
私は、"authority"という名前で作成しました。
2. 必要なテーブルを作成します。
1. ユーザテーブル
ユーザテーブル。このテーブルはユーザ名とパスワードのフィ
ールド を必要とします。 この例では、"users"をテーブル名
に、"user_name" をユーザ名を記録するカラムに、
"user_pass"をユーザのパスワードにしました。
2. ロールテーブル
このテーブルには、このレルムの属するコンテナの管理下の展
開記述子 (deployment descriptor)で使用されているすべての
ロールを設定する必要が あります。 この例では、"roles"を
テーブル名に、"role_name"をロール名にしました。 注: この
テーブルはTomcatでは全く使われません。
3. ロール-ユーザテーブル
このテーブルはロールと個々のユーザを結び付けます。この例
では、 "user_roles"をテーブル名に、"role_name"をロール名
に、 ユーザ名はユーザテーブル中の物と同じカラム名にしま
した。 (この例では"user_name"です。)
テーブルを作成するためには、以下のSQLを使用しました。
create table users
(
user_name varchar(15) not null primary key,
user_pass varchar(15) not null
);
create table roles
(
role_name varchar(15) not null primary key
);
create table user_roles
(
user_name varchar(15) not null,
role_name varchar(15) not null,
primary key( user_name, role_name )
);
テーブル出力のサンプルは以下の通りです。
mysql> select * from users;
+-----------+-----------+
| user_name | user_pass |
+-----------+-----------+
| tomcat | tomcat |
| user1 | tomcat |
| user2 | tomcat |
| user3 | tomcat |
+-----------+-----------+
4 rows in set (0.00 sec)
mysql>
mysql> select * from roles;
+------------+
| role_name |
+------------+
| tomcat |
| role1 |
+------------+
2 rows in set (0.02 sec)
mysql>
mysql> select * from user_roles;
+------------+-----------+
| role_name | user_name |
+------------+-----------+
| tomcat | user1 |
| role1 | user2 |
| tomcat | tomcat |
| role1 | tomcat |
+------------+-----------+
4 rows in set (0.00 sec)
mysql>
3. Tomcatの設定
server.xmlファイルに情報を追加します。この例では以下のように設定し
ました。
driverName --> データベースに接続するために必要なドライバ
connectionURL --> データベースに接続するために使用されるコネクションURL
userTable --> ユーザテーブル
userNameCol --> ユーザテーブルのユーザ名で使われるカラム名
userCredCol --> ユーザテーブルのパスワードで使われるカラム名
userRoleTable --> ユーザのロールのテーブル
roleNameCol --> ユーザテーブル中のユーザに与えられているロール名のカラム名
オプション:
connectionName --> データベースに接続する時に使用される名前
connectionPassword データベースに接続する時に使用されるパスワード
ヒント
- JDBCドライバがlibディレクトリに存在することを確認してください。
- 接続に問題が起きる場合には、connectionNameとconnectionPasswordを指定する
ことができます。
[訳注: これは新舘邦貴が翻訳しました。 日本語訳に対するコメントは、
tomcat-trans@nekoyanagi.com宛に送って下さい。]