[CentOS6][OpenAM10] OpenAMを試す - OpenAMのシングルサインオン(SSO)を試す(2/4)


Create: 2014/02/22
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
環境構築と動作確認の手順は、以下のとおり。
  1. OpenAMサーバの構築( CentIS6.4 + Tomcat6 + OpenAM)
  2. OpenAMの設定
  3. リバースプロキシサーバにOpenAMのPolicyAgentを導入
  4. 動作確認

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ヘッダへ格納する設定は「エージェントの設定」を参照してください。
保護対象のWEBサイトを追加する場合は、「ポリシーの設定」と「エージェントの設定」に新しいWEBサイトの情報を追加していくことになります。

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"



[アプリケーション]タブの[保存]ボタンをクリックして、設定を保存します。


(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を削除します。
次に[選択]の下にある入力欄に変更後の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=  ※上記コマンド実行で取得した複合化キー



保存したときに、下図のようなメッセージが表示されますが、問題ないようです。



以上でOpenAMの設定は終了です。
最後に、OpenAMサーバにログインして、OpenAMを再起動します。再起動しないと反映されない設定変更もあります。
# service tomcat6 restart


■参考URL