2012年12月30日日曜日

MySQLでERROR 1005 (HY000): Can't create table 'user_db.groups' (errno: 150)

MySQLにおいて、外部参照キーをもつテーブルを作成する際に、以下のエラーが発生した際の対処方法を記載する。
ERROR 1005 (HY000): Can't create table 'user_db.groups' (errno: 150)
上記のエラーの原因は、以下の2つ考えれる。

  • MySQLでは、存在しないテーブルに対する外部参照キーの設定を許可していない。
    ⇒設定により、一時的に、上記のチェック機能を無効にする。
  • 親テーブルと子テーブルの外部参照キーとするカラムのデータタイプまたはサイズが異なる。
上記の1点目の対処方法としては、以下のコマンドを実行し、いったん外部参照キーのチェックを外す。
mysql> SET foreign_key_checks = 0;
外部参照キーをもつテーブルを作成した後、忘れずにもとの設定に戻す。
mysql> SET foreign_key_checks = 1;

2012年12月26日水曜日

OpenAM 10.0.0 管理ツールの設定

OpenAMの管理ツールの設定手順について説明する。
管理ツールを設定する環境には、事前に、OpenAMがセットアップされていることが前提となる。

①以下のサイトから管理ツールの媒体(ssoAdminTools.zip)をダウンロードする。

http://www.forgerock.org/openam.html

②ダウンロードしたインストール媒体を任意の場所に解凍する。

③解凍したフィルダ内のセットアップ用のバッチファイルを実行する。

C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0>setup.bat
OpenAM サーバーの設定ファイルのパス [C:\Users\yasu-bushi\openam]:C:\Users\yasu-bushi\opensso
デバッグディレクトリ [C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0\debug]:
ログディレクトリ [C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0\log]:
スクリプトは次のディレクトリに正しく設定されています:  C:\Users\yasu-bushi\Downloads\ssoAdminTools_1
0.0.0\opensso
デバッグディレクトリは C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0\debug です。
ログディレクトリは C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0\log です。
この tools.zip のバージョン:  OpenAM 10.0.0 (2012-April-13 10:24)
サーバーインスタンスのバージョン:  OpenAM 10.0.0 (2012-April-13 10:24)
C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0>
④管理ツールで使用するパスワードファイルを作成する。パスワードファイルには、OpenAMの管理ユーザ(amAdmin)のパスワードを記載する。
C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0\opensso\bin>echo ampassword> password.txt
⑤管理ツールを実行し、正常に実行することを確認する。

C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0\opensso\bin>ssoadm.bat list-servers -u amAdmin -f password.txt 
http://openam.yasuyasu.com:8080/opensso
【追記】
パスワードファイルには、平文ではなく、暗号化したパスワードを設定することも可能。
以下のコマンドを実行し、パスワードを暗号化する。
C:\Users\yasu-bushi\Downloads\ssoAdminTools_10.0.0\opensso\bin>ampassword.bat -e password.txt 
AQICc3lkj1o3T4VXyeyX2DX8JVGqWcSj19qm 


OpenAM 10.0.0 J2EEポリシーエージェントの設定

OpenAMのJ2EEポリシーエージェントを使用し、OpenAM本体と認証連携する。
下図で示すように、1つのGlassfish上に、OpenAM(認証サーバ)と業務アプリケーション用の2つのドメインを作成する。


① OpenAMの管理コンソールにログインする。「アクセス制御」タブ→「/(最上位のレルム)」→「エージェント」タブ→「J2EE」タブに移動する。

②「エージェント」項目の「新規」ボタンを押下する。以下の項目を入力し、「作成」ボタンを押下する。

  • 名前: glassfish(任意の値)
    ※ポリシーエージェントの設定でも必要になるため、メモしておく。
  • パスワード: password
    ※ポリシーエージェントの設定でも必要になるため、メモしておく。
  • 設定: 集中
    ※エージェントの設定情報が格納されている場所。「ローカル」の場合は、ポリシーエージェントが配備されているサーバに格納される。「集中」は、OpenAM サーバで管理される。
  • サーバー URL: http://openam.yasuyasu.com:8080/opensso
    ※OpenAMの配備先URL。
  • エージェント URL: http://openam.yasuyasu.com:9090/agentapp
    ※ポリシーエージェントの配備先URL

③ポリシーを作成する。「アクセス制御」タブ→「/(最上位のレルム)」→「ポリシー」タブに移動する。「新規ポリシー」ボタンを押下する。

④以下のようにポリシーを設定する。設定した後、「了解」ボタンを押下する。

  • 名前:任意の値
  • ルール:URL ポリシーエージェント (リソース名あり)
    リソース名:http://openam.yasuyasu.com:9090/sampletest/simple
  • 対象:認証済みユーザー
  • 条件:IP アドレス/DNS 名

⑤以下のサイトから、J2EEポリシーエージェント(Glassfish用)「appserver_v10_agent_3.zip」をインストールする。

http://www.forgerock.org/openam.html

⑥ダウンロードしたZIPファイルを任意の場所に解凍する。ここでは、C:\Users\yasu-bushi\Downloads\j2ee_agentsに解凍する。

⑦ポリシーエージェント時に必要となるパスワードファイルを作成する。パスワードファイルには、②で設定した値を記載する。

echo password> .\password

⑧agentadminコマンドを実行し、ポリシーエージェントをセットアップする。

C:\Users\yasu-bushi\Downloads\j2ee_agents\appserver_v10_agent\bin>agentadmin --install

-----------------------------------------------
SUMMARY OF YOUR RESPONSES
-----------------------------------------------
Application Server Config Directory :D:\glassfish\domains\domain2\config
Application Server Instance name : server
OpenSSO server URL : http://openam.yasuyasu.com:8080/opensso
Agent URL : http://openam.yasuyasu.com:9090/agentapp
Agent Profile name : glassfish
Agent Profile Password file name :C:\Users\yasu-bushi\Downloads\j2ee_agents\password

⑨agentapp.warをglassfishに配備する。

⑩サンプルアプリケーションをglassfishに配備する。このとき、web.xmlには、ポリシーエージェントが呼ばれるように、以下のフィルター設定を記載する。

----------------------------------------------------------------
<filter>
  <filter-name>Agent</filter-name>
  <filter-class>com.sun.identity.agents.filter.AmAgentFilter</filter-class>
</filter>

<filter-mapping>
  <filter-name>Agent</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>INCLUDE</dispatcher>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>ERROR</dispatcher>
</filter-mapping>
----------------------------------------------------------------


⑪サンプルアプリケーションにアクセスした際、OpenAMのログイン画面が表示されることを確認する。また、ログインが成功した後、サンプルアプリケーションにアクセスできることを確認する。

【補足】
J2EEポリシーエージェントのデバックログ・監査ログの出力先:
C:\Users\yasu-bushi\Downloads\j2ee_agents\appserver_v10_agent\Agent_001\logs\debug\debug.out