[CentOS6][OpenAM10] ポリシーの設定(あるURLへのアクセス権限を与える)


Create: 2014/03/08
LastUpdate: 2014/03/08
≪ メニューに戻る

[CentOS6][OpenAM10] OpenAMを試す - OpenAMのシングルサインオン(SSO)を試す(2/4)」では、下図の環境を構築し、エージェントの"SSOのみモード"を有効にして、認証(ID/パスワードなどの本人確認)だけでWEBサイト全体を保護していたので、URLやユーザ単位でのアクセス制御はできませんでした。


ユーザ端末:192.168.1.91(exdt01.example.com)
OpenAMサーバ:192.168.1.92(exam01.example.com)
リバースプロキシサーバ:192.168.1.93(exig01.example.com)
WEBサーバ:192.168.1.94(www.example.com)

"SSOのみモード"を無効にすると、ポリシーを設定して認可(あるURLへのアクセス権限を与えること)を与えることができるようになります。
例えば、特定のユーザにだけ、特定のURLへのアクセスを許可することが可能になります。
ここでは、上図の同じ環境を使って"SSOのみモード"を無効にし、認可を試します。
ポリシーの設定を行って、認証に成功したユーザ全員に、「テスト用WEBサイト」へのアクセス権限を与えることにします。

1.SSOのみモードを無効にする


まず、"SSOのみモード" を無効にします。
OpenAM管理画面をひらき、[アクセス制御] > [レルム(test01)] > [エージェント] > [エージェント(apache22-exig01)] > [Web] > [グローバル] をクリックすると下図の画面が表示されます。
[一般] > [SSOのみモード] の"有効"のチェックを外すと無効になります。
変更が終了したら、画面上部の[保存]ボタンをクリックします。



"SSOのみモード"が無効で、ポリシーも設定していない状態で下記URLの「テスト用WEBサイト」にアクセスしてみます。
  • http://exig01.example.com
すると、OpenAMログイン画面での認証成功後、下図のような 403エラーになります。
現時点では、ポリシーを設定していないので、誰にもアクセス権限がなく、認証に成功してもエラーになります。



2.ポリシーの作成


今回は、認証に成功したユーザ全員に、「テスト用WEBサイト(全URL)」へのアクセス権限を与えます。
サブレルムの "test01" にポリシーを設定するには、まず、最上位のレルムで参照ポリシーを作成する必要があります。
OpenAMの管理画面をひらき、[アクセス制御] > [レルム(最上位のレルム)] > [ポリシー] をクリックすると、下図の画面が表示されるので、[新規参照]ボタンをクリックします。



[名前] を入力して、[ルール] > [新規] ボタンをクリックします。



[URLポリシーエージェント(リソース名あり)]をクリックして、[次へ]ボタンをクリックします。



アクセス制御したいサイト(URL)を登録します。
[名前]を入力し、[リソース名]に「テスト用WEBサイトのURL(http://exig01.example.com)」を入力して、[次へ]ボタンをクリックします。



[ルール]欄に追加したルール(exig01)が表示されているのを確認したら、[参照] > [新規] ボタンをクリックします。



参照を許すサブレルムを設定します。
[名前]を入力し、[値] のメニューから "test01" を選択して [終了]ボタンをクリックします。



[参照]欄に追加した参照(test01)が表示されているのを確認したら、[了解]ボタンをクリックします。



ポリシー欄に参照ポリシー(ref-exig01)が表示されていたら、最上位レルムでの参照ポリシー作成は完了です。
これで、サブレルム(test01)にポリシーを設定できるようになります。
[アクセス制御へ戻る]ボタンをクリックして、サブレルム(test01)に移動します。



[アクセス制御] > [レルム(test01)] > [ポリシー] をクリックすると下図の画面が表示されます。
[新規ポリシー]をクリックします。



[名前]を入力し、[ルール] > [新規] ボタンをクリックします。



[次へ]ボタンをクリックします。



「テスト用WEBサイト」の全URLにアクセスできるように許可します。
[名前] を入力して、[リソース名]に "http://exig01.example.com/*" を入力します。"*"はワイルドカードです。
[GET]、[POST]をチェックして、[許可]を選択します。
設定が済んだら、[終了]ボタンをクリックします。



[ルール]欄に、追加したルール(exig01-0101)が表示されていることを確認したら、
[対象] > [新規]ボタンをクリックします。



OpenAMで認証成功したユーザ全員にアクセス許可を与えます。
[認証済みユーザ]をクリックして、[次へ]ボタンをクリックします。
ちなみに、特定のユーザだけにアクセス許可を与えたい場合は、[OpenAMアイデンティティー対象]をチェックします。


[名前]を入力して、[終了]ボタンをクリックします。


[対象]欄に追加した対象(auth-user)が表示されていることを確認したら、[了解]ボタンをクリックします。



[ポリシー]欄に追加したポリシー(exig01-01)が表示されていればOKです。



以上で、ポリシーの作成は完了です。
OpenAM (tomcat) を再起動しなくても設定変更は有効になります。

3.動作確認


下記URLの「テスト用WEBサイト」にアクセスします。
  • http://exig01.example.com
下図のOpenAMのログイン画面が表示されるので、user01 でログインします。



認証に成功すると下図のように「テスト用WEBサイト」のトップページが表示されます。



試しに、URLにクエリー(?c=a)を含めてみると、下図のように 403 エラーになりました。
ポリシー設定が不足しているようです。



サブレルム(test01)のポリシー(exig01-01)に、新規ルールを追加しました。
[リソース名]に "http://exig01.example.com/*?*" を入力して、クエリーを含んだURLもアクセス許可の対象にします。



新規ルール(exig01-0102)が表示されているのを確認したら、[保存]ボタンをクリックして、ポリシーを保存します。



サブレルム(test01)のポリシーが下図のように表示されたらOKです。



「テスト用WEBサイト」を再表示すると、下図のように 403エラーがでなくなりました。
これでクエリーを含んだURLにもアクセスできます。



ちなみに、user01以外のユーザ(demo)でログインしても「テスト用WEBサイト」にアクセスできます。
ただし、user01だけしか代理認証用の設定をしていないので、demo だと下図のように代理認証には失敗します。



demo ユーザの初期パスワードは "changeit" です。