OpenIG自習室(第9回:OpenAM連携 Vol.2)

takaです。

前回はOpenAMのインストールを行いました。
OpenIGだけではターゲットアプリケーションのアカウント管理や認証を行うことができませんので、OpenAMとの連携が必要となります。

今回はOpenIGとOpenAMを連携させるための設定を行います。

検証作業は、以下の環境で実施しています。
(同一ハードウェア上で複数サーバを起動しています)

OS :Ubuntu 12.04 LTS
CPU:Intel Celeron 2.20GHz
MEM:2GB

検証サーバ: www.example.com (192.168.0.10)
アプリケーションサーバ(Apache2+PHP:ポート80)
OpenIGサーバ(Tomcat6:ポート8080)
OpenAMサーバ(Tomcat6:ポート18080)


1. エージェント設定

1-1. OpenAMにamAdminでログインし、アクセス制御 > /(最上位のレルム)> エージェント > J2EE を開いて “エージェント”表の【新規…】ボタンをクリックします。

1-2. 新しいエージェントを登録します。名前とパスワードは任意で構いません。
“設定”は 集中 を選択します。
“サーバーURL” には、OpenAMサーバのURL(ここでは http://www.example.com:18080/openam)を入力します。
“エージェントURL”には、エージェントのインストール先URL(ここでは http://www.example.com:8080/agentapp)を入力します。

(注記)
エージェントのインストールは次回行います。
検証環境でのエージェントインストール先は、OpenIGサーバが稼働するWebアプリケーションコンテナとなります。
なお、エージェントをインストールする際には上記設定内容が必要となりますので、忘れないように控えておきましょう。

入力が終わったら【作成】ボタンをクリックします。

1-3. “エージェント”表に作成したエージェント名が表示されているので、エージェント名のリンクをクリックします。

1-4. グローバル の “一般”リンクをクリックし、”エージェントフィルタモード” の “対応するマップ値” に SSO_ONLY と入力して【追加】ボタンをクリックします。(”マップキー”は空欄のままで結構です)

1-5. “エージェントフィルタモード” のリストから ALL を選択し、【削除】ボタンをクリックします。

1-6. 画面の最上部に戻って 【保存】ボタンをクリックします。

1-7. アプリケーション タブをクリックし、”セッション属性処理”リンクをクリックします。

1-8. “セッション属性フェッチモード”で HTTP_HEADER を選択し、”セッション属性マッピング”に以下の2項目を追加します。

マップキー:UserToken
対応するマップ値:username

マップキー:sunIdentityUserPassword
対応するマップ値:password

1-9. 画面の最上部に戻って 【保存】ボタンをクリックします。

1-10. SSO タブをクリックし、”クロスドメイン SSO”リンクをクリックします。

1-11. “クロスドメイン SSO” の 有効 にチェックを入れます。

1-12. 画面の最上部に戻って 【保存】ボタンをクリックします。

この作業は、エージェントが増えた場合(つまり保護するアプリケーションが増えた場合)にはほぼ同様の作業が必要となります。
エージェント毎に設定内容が多少異なる可能性がありますのでご注意ください。

2. SSO設定

2-1. 【メインページに戻る】ボタンをクリックして、認証 タブをクリックします。

2-2. “コア”の【すべてのコア設定…】ボタンをクリックします。

2-3. 画面を下にスクロールして、“ポスト認証プロセス” > “認証ポストプロセスクラス” の “新しい値” に com.sun.identity.authentication.spi.ReplayPasswd と入力して【追加】ボタンをクリックします。

2-4. 画面の最上部に戻って 【保存】ボタンをクリックします。

2-5. 一旦管理画面から離れ、OpenAMが稼働しているサーバのコンソールを開きます。

2-6. コンソールで以下のコマンドを実行します。
なお、以下は Ubuntu 環境上のパスですので、ご利用環境に合わせて変更してください。

# cd /var/lib/tomcat6/webapps/openam/WEB-INF/lib

バージョンにより少々コマンドが異なるのでご注意ください。
(ここでは、バージョン10.1.0を使っています)

■10.1.0の場合

# java -classpath openam-core-10.1.0-Xpress.jar:openam-shared-10.1.0-Xpress.jar com.sun.identity.common.DESGenKey

■10.2.0の場合

# java -classpath openam-core-10.2.0-SNAPSHOT.jar:openam-shared-10.2.0-SNAPSHOT.jar com.sun.identity.common.DESGenKey

コマンドを実行すると Key ==> XXXXXXXXXXXX という復号化キーの値が表示されます。
この「XXXXXXXXXXXX」の部分をコピーするなどして控えておいてください。

2-7. 再びOpenAMの管理画面に戻って トップページ > 設定 > サーバーおよびサイト を開き、”サーバー”表にあるサーバー名のリンクをクリックします。

2-8. 高度 タブをクリックし “拡張プロパティー”表の【追加】ボタンをクリックします。

2-9. 表の一番下に入力フィールドが追加されますので、以下の項目を追加します。

プロパティー名:com.sun.am.replaypasswd.key
プロパティー値:2-6で控えた復号化キーの値

2-10. 【保存】ボタンをクリックして保存します。その際、
「サーバープロファイルが更新されました。識別されないプロパティー com.sun.am.replaypasswd.key です。」
という警告が表示されますが、動作上は問題ありません。(現在のところは・・・ですが)

3. 対象設定

3-1. トップページ > アクセス制御 > /(最上位のレルム)> 対象 を開き、”ユーザー”表の【新規…】ボタンをクリックします。

3-2. 新しい ユーザー画面のフォームに利用者ユーザーの情報を登録します。
ここでは、簡易認証アプリで設定したユーザーアカウント情報を入力します。
入力が終わったら【了解】ボタンをクリックします。

3-3. ユーザー画面に戻ります。
他にも必要があれば同様の手順でユーザーを登録してください。

4. ポリシー設定

4-1. トップページ > アクセス制御 > /(最上位のレルム)> ポリシー を開き、”ポリシー”表の【新規ポリシー…】ボタンをクリックします。

4-2. 新規ポリシー画面が開きますので、”一般” の “名前” に任意の名前を入力します。

4-3. “ルール”表の【新規…】ボタンをクリックします。

4-4. “ステップ 1/2: ルールのサービスタイプを選択”画面で、”サービスタイプ”を URL ポリシーエージェント(リソース名あり) にして【次へ】ボタンをクリックします。

4-5. “ステップ 2/2: 新規ルール”画面で、以下の項目を入力します。

名前:任意の名前で結構です。
リソース名:保護したいアプリケーションのURLを入力します。該当アプリケーションのドキュメントルート(ここでは /sample/)に「*」を追加した形で入力します。
(例)http://www.example.com:80/sample/*
アクション:”GET”と”POST”の両方にチェックを入れ、値はどちらも 許可 にします。

項目の入力が終わったら【終了】ボタンをクリックします。

4-6. 新規ポリシー画面に戻りますので、再度”ルール”表の【新規…】ボタンをクリックします。

4-7. 4-4と同様に URLポリシーエージェント(リソース名あり) を選択して【次へ】ボタンをクリックします。

4-8. 4-5とほぼ同様ですが、”名前”は4-5と別の内容にします。
また、”リソース名”はアプリケーションURLの最後を「*」ではなく「*?*」とします。
(例)http://www.example.com:80/sample/*?*

入力が終わったら【終了】ボタンをクリックします。

4-9. 新規ポリシー画面に戻りますので、”対象”表の【新規…】ボタンをクリックします。

4-10. “ステップ 1/2: 対象タイプを選択”で、”タイプ”を OpenAM アイデンティティー対象 にして【次へ】ボタンをクリックします。

4-11. “ステップ 2/2: 新規対象 - OpenAM アイデンティティー対象”画面で、以下の項目を入力します。

名前:任意の名前で結構です。
フィルタ:ユーザー を選択して【検索】ボタンをクリックします。

“選択可能:”リストに、3.対象設定 で登録したユーザー名が表示されますので、該当ユーザーを選択して【追加 >】ボタンをクリックします。終わったら【終了】ボタンをクリックします。

4-12. 新規ポリシー画面に戻るので、【了解】ボタンをクリックします。

4-13. “(最上位のレルム)- ポリシー”画面に戻ります。登録した内容が表示されていることを確認してください。

これでOpenAM側での設定は完了です。
次回は、J2EEエージェントのインストールを行います。


(参考サイト)

ForgeRock社のOpenIGドキュメント、および以下のサイトを参考にさせていただきました。

OpenAM 10.2.0-SNAPSHOT Administration Guide
http://openam.forgerock.org/openam-documentation/openam-doc-source/doc/admin-guide/index.html

OpenAMによるシングルサインオン(2)リバースプロキシー編
http://tech-sketch.jp/2013/06/openam-1.html