Create: 2014/02/22
LastUpdate: 2014/03/08
≪ メニューに戻るLastUpdate: 2014/03/08
ここでは、OpenAMのテスト環境を構築したときの手順の一部を紹介します。
テスト環境の概要は、メニューを参照してください。
OpenAMにログイン(SSO)することで、「テスト用WEBサイト」も認証済みとなり、ヒトがログイン操作しなくてもページを参照できるようにようにします。
リバースプロキシサーバには、OpenAMのPolicyAgentを導入して、OpenAMと連携して動くようにします。
PolicyAgentがOpenAMに問い合わせを行い、認証済みであれば、WEBサーバのアクセスを許可し、未認証であれば、OpenAMのログイン画面を表示します。
システム構成のイメージは以下のとおり。
OpenAMサーバは CentIS6.4 + Tomcat6 + OpenAM とします。
ユーザ端末:192.168.1.91
OpenAMサーバ:192.168.1.92
リバースプロキシサーバ:192.168.1.93
WEBサーバ:192.168.1.94
環境構築と動作確認の手順は、以下のとおり。2.OpenAMの設定
ここでは、「テスト用WEBサイト」をOpenAMのSSOで保護するように設定していきます。
「テスト用WEBサイト」にはリバースプロキシ(OpenIGの代理認証)経由でアクセスすることにします。
OpenAMには、認証(ID/パスワードなどの本人確認)、認可(あるURLへのアクセス権限を与えること)の機能がありますが、今回は、認証のみとして、認可はしません。
OpenAM管理画面に管理者ユーザ(amadmin)でログインして設定を行います。
主な設定項目は以下のとおり
-
レルムの作成
レルムとは、OpenAMの設定を管理するための単位です。基本的にはユーザ情報DBごとに分けるようです。
初期状態では、最上位のレルム( / ) が1つあります。
最上位のレルム に設定してもいいのですが、今回は、新しくレルム(/ test01)を作成して、test01 に設定をおこないます。
-
認証の設定
ここでは認証方式や、認証連鎖(複数の認証方式の組み合わせ)に関する設定を行います。
今回の認証方式は、OpenAMのユーザデータストア(OpenDJ)を使用したID/パスワード認証にします。認証連鎖は行いません。
-
サービスの設定
ここは、よく、わからないが、認証するユーザのユーザ情報を格納しているデータストアを指定しているみたい。
今回は、特に変更しない。
-
データストアの設定
ここでは、OpenAMが使用するユーザ情報の格納先を設定します。後述の、「対象の設定」で使用します。
デフォルトは、初期設定時に指定した OpenAMのユーザデータストアを使用するように設定されています。
-
ポリシーの設定
ここでは、「テスト用WEBサイト」を、どのような条件で保護するか設定します。
今回は、何も設定しません。エージェントを"SSOのみモード"で動かすので、ポリシーは無視されます。
-
エージェントの設定
OpenAMでSSOするためには、「保護対象のWEBサーバ」、または、「リバースプロキシ」にPolicy Agent と呼ばれるプログラムを組み込んで、OpenAMでアクセス制御する必要があります。
今回は、リバースプロキシに PolicyAgent を導入します。
ここでは、PolicyAgent 関連の設定を行い、HTTPヘッダで受け渡すユーザ情報(ID/パスワード)の設定などを行います。また、今回は、"SSOのみモード"を有効にして認証だけ行い、認可はしないように設定します。
なお、ここで設定したエージェントの[名前]と[パスワード]は、あとでリバースプロキシに PolicyAgent をインストールするときに使用します。
HTTPヘッダでOpenIGに連携する情報は以下のとおり。
HTTPヘッダ名 設定値 username OpenAMログイン画面で入力したユーザIDを設定する。 pwd1 OpenAMログイン画面で入力したパスワードを設定する。暗号化された値が設定される。BASIC認証用のパスワードとして使用する pwd2 OpenAMユーザデータストアの姓(sn)に格納された値を設定する。フォーム認証用パスワードとして使用する。 -
対象の設定
OpenAMのユーザデータストアにテスト用のユーザを登録します。
今回は、ここで登録したID/パスワードで SSO します。
なお、[姓]には、フォーム認証用のパスワードを設定します。
-
パスワードの暗号化
OpenAMのログイン画面で入力したパスワードはOpenAM側で暗号化してHTTPヘッダに格納し、OpenIGで複合化します。
ここでは、パスワードを暗号化する設定を行います。HTTPヘッダへ格納する設定は「エージェントの設定」を参照してください。
2.1.レルムの作成
新しいレルム(test01)を作成します。
[アクセス制御]タブをクリックすると、下図の画面が表示されるので、[新規]ボタンをクリックします。
下図の画面が表示されたら、[名前]に “test01" を入力して、[了解]ボタンをクリックします。
下図のように、”test01" が表示されたらOKです。
2.2.認証の設定
認証は、デフォルトで、OpenAMのユーザデータストアに登録した ID /パスワードで認証するようになっています。
認証を設定する画面は下図のとおり。
[アクセス制御]タブ > [レルム(test01)] > [認証]タブ をクリックします。
2.3.サービスの設定
サービスは、デフォルトの設定を使用します。
[ポリシー設定]では、OpenAMのユーザデータストアを使用するように設定されています。
サービスを設定する画面は下図のとおり。
[アクセス制御]タブ > [レルム(test01)] > [サービス]タブ をクリックします。
2.4.データストアの設定
サービスは、デフォルトの設定を使用します。
[embedded]では、OpenAMのユーザデータストアを使用するように設定されています。
サービスを設定する画面は下図のとおり。
[アクセス制御]タブ > [レルム(test01)] > [データストア]タブ をクリックします。
2.5.ポリシーの設定
今回はエージェントの"SSOのみモード"を有効にするので、認証だけでアクセス制御を行います。
認可は使用しないので、ポリシー設定は行いません。
今回は使用しませんが、下図がポリシーの設定画面です。
サブレルムにポリシーを設定する場合は、最上位のレルムで参照ポリシーを作成する必要があります。
2.6.エージェントの設定
ここでは、Apache のPolicyAgent の設定を行います。
最初は、リバースプロキシのTomcat6 にPolicyAgent をインストールしようとしたのですが、CentOS6付属のTomcat6にはPolicyAgent をインストールできませんでした。
なので、リバースプロキシサーバをApache+Tomcat6 で連携して動くようにして、Apache にPolicyAgent をインストールすることにしました。
(1)エージェントの作成
[アクセス制御]タブに戻り、”test01” をクリックします。[エージェント]タブをクリックすると下図の画面が表示されるので、[新規]ボタンをクリックします。
下図の画面が表示されたら以下の内容を入力して、[作成]ボタンを入力します。
- [名前] ・・・ PolicyAgentの名称。PolicyAgent インストール時に使用します。
ex) apache22-exig01 - [パスワード] ・・・ PolicyAgentのパスワード。PolicyAgent インストール時に使用します。
ex) password - [サーバURL] ・・・ OpenAMのURL
ex) http://exam01.example.com:8080/openam - [エージェントURL] ・・・ PolicyAgent をインストールしたWEBサイトのURL
ex) http://exig01.example.com:80
下図の画面に戻ったら、”apache22-exig01" をクリックし、エージェントの設定をしていきます。
(2)グローバル設定
今回は、認証だけ行い、認可はしないように設定します[グローバル]タブをクリックすると、下図の画面が表示されます。
下図の [SSOのみモード]をチェックします。
これで、認可の設定(ポリシー設定)が不要になります。
[グローバル]タブの[保存]ボタンをクリックして、設定を保存します。
(3)アプリケーション設定
今回使用するHTTPヘッダの設定を行います。[アプリケーション]タブをクリックすると下図の画面が表示されます。
プロファイル属性処理でOpenAMユーザデータストアの値をHTTPヘッダに格納するように設定します。
[プロファイル属性フェッチモード]の “HTTP_HEADE" をクリックします。
[プロファイル属性マップ] を下図のように設定します。
[マップキー]に “sn" を入力し、[対応するマップ値]に “pwd2" を入力して[追加]ボタンをクリックすると[現在の値]が下図のように表示されます。
セッション属性処理でOpenAMログイン画面での入力値をHTTPヘッダに格納するように設定します。
[セッション属性フェッチモード]の “HTTP_HEADE" をクリックします。
[セッション属性マップ] を下図のように設定します。
[マップキー]: “UserToken" 、[対応するマップ値]:“username"
[マップキー]: “sunIdentityUserPassword" 、[対応するマップ値]:“pwd1"
[マップキー]: “sunIdentityUserPassword" 、[対応するマップ値]:“pwd1"
[アプリケーション]タブの[保存]ボタンをクリックして、設定を保存します。
(5)OpenAMサービス設定
[OpenAMサービス]タブをクリックすると、下図の画面が表示されます。[OpenAM ログイン URL]を変更して、レルムの”test01” を使用するように設定します。
初期値:http://exam01.example.com:8080/openam/UI/Login
変更後:http://exam01.example.com:8080/openam/UI/Login?realm=test01
[選択]でURLをクリックすると、[削除]ボタンをクリックできるようになるので、[削除]ボタンをクリックして初期値のURLを削除します。変更後:http://exam01.example.com:8080/openam/UI/Login?realm=test01
次に[選択]の下にある入力欄に変更後のURLを入力して[追加]ボタンをクリックすると下図のように表示されます。
[OpenAMサービス]タブの[保存]ボタンをクリックして、設定を保存します。
2.7.対象の設定
テスト用のユーザを登録します。
[アクセス制御]タブ > [レルム(test01)] をクリックします。
[対象]タブをクリックすると、下図の画面が表示されるので、
[新規]ボタンをクリックします。
下図の画面が表示されたら、テスト用のユーザとして “user01" の情報を入力します。
OpenAMのログイン画面で認証するときは、ここで設定した ID とパスワード使います。
* のついた項目は必須です。入力が終了したら、[了解]ボタンをクリックします。
なお、ここで設定したIDとパスワードをHTTPヘッダに格納して OpenIGに連携したいので
[姓]には、フォーム認証用のパスワードを入力し、[パスワード]には、BASIC認証用のパスワードを入することにします。
2.8.パスワード暗号化の設定
OpenAMログイン画面に入力したパスワードを暗号化して、セッション情報の sunIdentityUserPasswordに格納するように設定します。なお、ここで使用する暗号化キーは、OpenIGで複合化するときに必要になります。
(1)認証ポストプロセスクラスの設定
[アクセス制御] > [レルム(test01)] > [認証] をクリックすると、下図の画面が表示されます。[すべてのコア設定] をクリックします。
下図の認証ポストプロセスクラスの[現在の値] に “com.sun.identity.authentication.spi.ReplayPasswd" を設定します。
ページ上部の[保存]ボタンをクリックして、設定を保存します。
(2)複合化キーの設定
OpenAMサーバにログインして、以下のコマンドを実行し、複合化キーを取得します。# cd /var/lib/tomcat6/webapps/openam/WEB-INF/lib # /usr/java/default/bin/java -classpath amserver.jar:opensso-sharedlib.jar com.sun.identity.common.DESGenKey Key ==> nYnQ9E/BlIo=OpenAM管理画面を開いて、複合化キーを設定します。
[設定]タブ > [サーバーおよびサイト]タブ をクリックすると下図の画面が表示されるので、[サーバ名]をクリックします。
[高度]タブをクリックすると下図の画面が表示されるので、[追加]ボタンをクリックします。
一番下にプロパティの入力欄が表示されるので、以下の値を入力して、[保存]ボタンをクリックします。
[プロパティ名]: com.sun.am.replaypasswd.key
[プロパティ値]: nYnQ9E/BlIo= ※上記コマンド実行で取得した複合化キー
[プロパティ値]: nYnQ9E/BlIo= ※上記コマンド実行で取得した複合化キー
保存したときに、下図のようなメッセージが表示されますが、問題ないようです。
以上でOpenAMの設定は終了です。
最後に、OpenAMサーバにログインして、OpenAMを再起動します。再起動しないと反映されない設定変更もあります。
# service tomcat6 restart
■参考URL