2012年11月12日月曜日

OpenAM10.0 MySQLとの接続

OpenAMで使用するユーザ情報のデータストアとしてMySQLを使用する。
※環境設定用のデータストアはOpenDJのままであることに注意。OpenAMの仕様上、セットアップ以降に環境設定用のデータストアを変更することはできない。

(参考URL)
http://docs.oracle.com/cd/E19316-01/820-4729/ggtsq/index.html

なお、接続先のMySQLの設定情報は以下のとおり。

--------------------------------------------------------------------

mysql> status;
--------------
C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe  Ver 14.14 Distrib 5.5.28,
 for Win64 (x86)

Connection id:          2
Current database:
Current user:           root@localhost
SSL:                    Not in use
Using delimiter:        ;
Server version:         5.5.28 MySQL Community Server (GPL)
Protocol version:       10
Connection:             localhost via TCP/IP
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    latin1
Conn.  characterset:    latin1
TCP port:               3306
Uptime:                 1 min 19 sec

Threads: 1  Questions: 13  Slow queries: 0  Opens: 33  Flush tables: 1  Open tab
les: 26  Queries per second avg: 0.164
--------------

--------------------------------------------------------------------

①MySQL Command Line Clientを起動し、ユーザ用のデータベースを作成する。

mysql> create database user_db;
Query OK, 1 row affected (0.00 sec)

②ユーザ用のデータベースにアクセスするユーザ「db_user」を作成する。


mysql> grant select,insert,delete,update,create,drop,file,
    -> alter,index on *.* to db_user identified by 'password';
Query OK, 0 rows affected (0.00 sec)


③user_dbデータベースに、ユーザ情報を格納するテーブル「auth_users」を作成する。
★現時点では、グループ操作に関する処理は未実装であるため、
★グループ用のテーブルは作成しない。


mysql> use user_db;
Database changed

mysql>  create table auth_users(uid varchar(50),cn varchar(50),inetuserstatus va
rchar(20),userpassword varchar(50),ChangePassword varchar(50),mail varchar(50),s
unIdentityMSISDNNumber varchar(50),sn varchar(50),manager varchar(50),preferredl
ocale varchar(10),iplanet_am_user_password_reset_force_reset varchar(50),givenna
me varchar(50),iplanet_am_user_alias_list varchar(50),iplanet_am_user_account_li
fe varchar(50),telephonenumber varchar(50),employeenumber varchar(50),iplanet_am
_user_auth_config varchar(50),postaladdress varchar(50),iplanet_am_user_password
_resetoptions varchar(50),iplanet_am_user_password_reset_question_answer varchar
(50),iplanet_am_user_success_url varchar(50),iplanet_am_user_failure_url varchar
(50));

Query OK, 0 rows affected (0.01 sec)


④MySQLコネクタ「mysql-connector-java-5.1.22-bin.jar」を、OpenAMが配備された以下のディレクトリにコピーする(またはクラスパスに設定する)。

D:\glassfish\domains\domain1\applications\j2ee-modules\opensso\WEB-INF\lib

⑤Glassfishを再起動する。

⑥OpenAMの管理コンソールにログインする。

⑦「アクセス制御」タブ→「/(最上位のレルム)」を押下し、「データストア」タブを押下する。

⑧「新規」ボタンを押下する。「ステップ 1/2: データストアのタイプを選択」において、以下を設定する。入力後、「次へ」を押下する。
・名前:任意の値
・タイプ:データベースリポジトリ (アーリーアクセス)



⑨「ステップ 2/2: 新規データストア - データベースリポジトリ (アーリーアクセス)」において、MySQLの設定を行う。設定後、「終了」を押下する。
主な変更点は以下である。

データベースへ接続するためのパスワード:***
JDBC ドライバ URL:jdbc:mysql://127.0.0.1:3306/user_db
データベースに接続するユーザー:db_user
 

⑩「データストア」タブにおいて、既存の「embedded」(OpenDJ)を削除する。

⑪「対象」→「ユーザ」タブにおいて、「新規」ボタンを押下し、ユーザを作成する。正常にユーザが作成されることを確認する。また、以下のOpenAMのデバックログにエラーが出力されていないことを確認する。

C:\Users\yasu-bushi\opensso\opensso\debug\
                                                  Configuration
                                                  IdRepo