この記事は、intra-mart Advent Calendar 2013 第18日の記事です。
今回は、認可関連のタグ3種(imAuthz, imUrlAuthz, imAuthzPolicyEditor)をご紹介したいと思います。
imAuthz タグ
サンプルコード
1 2 3 |
<imart type="imAuthz" uri="service://menu/sitemap" action="execute"> サイトマップの実行権限がある場合のみ、この部分の処理が行われます。 </imart> |
imAuthz タグは、指定した認可リソースの権限状態に基づいて、タグに挟まれた範囲の実行を制御します。
アクセスしているユーザが、 指定した 認可リソースの uri と action に対して権限を有しているかどうかで制御を行います。
上記の例は、iAPがデフォルトで用意している認可リソース「service://menu/sitemap」に対しての実行制御を行っていますが、
もちろん、ユーザが新たに作成した認可リソースを用いてアクセス制御を行うことも可能です。
認可設定画面より任意のリソースを追加し、そこで設定した認可リソースのuriを imAuthz タグに指定することで、ユーザ独自の制御を行うことが可能です。
制御を行うための認可リソースは、他のリソースと混同しないように登録することをおすすめします。
例えば、先日ご紹介させていただいた「認可リソースの拡張方法」を応用して、専用のリソースタイプを作成し、そこにimAuthz タグ用のリソースを集約させたり、
以下のように画面・処理の直下に専用のリソースグループを作成し、そこに集約しておくなどを行うと、メンテナンスが楽になると思います。
なお、effect属性の利用は非推奨となっています。
(権限状態は“permit”(許可)であるかどうかで判別すべきであり、effect属性 は、通常 指定する必要が無いためです)
“permit”(許可)ではない状態を判別したい場合は、属性 negative を利用してください。
ちなみに、この機能を利用することで、iWP ver7.2 の <accessCtrl> タグを代替することが可能です。
<accessCtrl>タグよりも更にきめ細かなアクセス制御が可能となっておりますので、ぜひご活用ください。
imUrlAuthz タグ
サンプルコード
1 2 3 |
<imart type="imUrlAuthz" url="/menu/sitemap"> サイトマップ画面の実行権限がある場合のみ、この部分の処理が行われます。 </imart> |
このタグも、アクセスしているユーザの権限に応じて、表示領域制御を行う事が可能です。
前述の imAuthzタグ は、 認可リソース を指定してタグに挟まれた範囲内の部分の実行を制御していましたが、こちらの imUrlAuthzタグ は、 画面へアクセスするためのURL を指定して制御を行います。
画面を起点として実行制御を行いたい場合に有用なタグです。
imAuthzタグ、および、imUrlAuthzタグ を 適宜使い分けて、表示領域制御にご活用いただければと思います。
なお、imUrlAuthzタグも effect属性の利用は非推奨となっておりますので、ご留意ください。
imAuthzPolicyEditor タグ
サンプルコード
1 2 3 4 5 6 7 |
<imart type="imAuthzPolicyEditor" displayType="link" partId="im_authz_impl_router" editableResource="0/intra-mart,im-calendar-service,im-authz-service" highlightResource="0/intra-mart"> 認可設定を開く </imart> |
imAuthzPolicyEditor タグは、認可設定画面をポップアップ画面として呼び出すためのタグです。
テナント管理機能の認可設定画面を特定の領域に絞って表示させることができます。
上記の例は、iAPがデフォルトで用意しているポリシー部分編集設定の part-id を指定していますが、ポリシー部分編集設定ファイル を追加することで、独自の認可設定画面を構成することが可能です。
なお、imAuthzPolicyEditorタグで認可設定画面を部品として利用できるユーザは、デフォルトでは、 認可設定の基本画面を開くことができる権限を持つユーザに限られます 。
(通常認可設定ができないユーザに認可設定画面を利用させないようにするために、認可機構で制限しています)
しかし、認可設定画面を部品として利用する場合に、特定のリソースに対して呼び出し側機能の権限に基づいて設定可否を判断したい場合があります。
例えば、メニュー設定画面を開くことができるユーザが、登録したメニューグループに対して認可権限を設定するケースです。
認可機構側では個々のリソースグループに対して表示可否を判断できないため、このような細かなリソースグループの表示制御を行いたい場合に、各機能に問い合わせを行って表示可否を判断してもらうコールバック機能があります。
詳しくは、 APIリファレンス や「認可 拡張プログラミングガイド」の 認可設定画面部品の使用 や リソース表示可否判断クラスの設定 をご参照ください。
先日ご紹介させていただいた「認可リソースの拡張方法」や「認可サブジェクトの拡張方法」を応用することで、アプリケーション独自の認可設定画面を作成することも可能です。ぜひご活用ください。