この記事は、intra-mart Advent Calendar 2013 第12日の記事です。
今回は「認可リソースの拡張方法」をご紹介したいと思います。
intra-mart Accel Platform では標準的に以下のようなコンポーネントが認可機構と連携しています。
- ルータ
- Webサービス
- メニュー
- ポータル
- IM共通マスタ
- TableMaintenance
- IMBox
これらの各コンポーネントでは独自の認可リソースを追加しています。
例えば、メニューでは「メニューグループ」という独自のリソースが定義されており、そのリソースに対して「参照」および「管理」アクションが定義されています。
IM共通マスタでは「会社」という独自のリソースが定義されており、「参照」および「編集」アクションが定義されています。
もちろん、この認可リソースは、開発者が独自に追加可能です!
認可設定画面でいうところの「リソースの種類」が追加可能と考えていただくと、理解していただきやすいかもしれません。
このように、intra-mart Accel Platform では、リソースの階層構造や使用できるアクションを定義することが可能となっておりますので、作成したアプリケーションで扱う データの特性を考慮したアクセス制御 が実現可能となっております。
例えば、アプリケーションが扱うデータ1件ごとに、CRUD(Create, Read, Update, Delete)単位でアクセス制御することが可能です。
(取り扱うデータ量とパフォーマンスの トレードオフは別途調整する必要があります(キャッシュ戦略の検討など))
リソースタイプの拡張を行うには、認可機構にリソースに関連する情報の登録が必要になります。
おおまかな流れは、以下の通りです。
- リソースを認可機構でどう表現するかを決める。
- リソースタイプを実装する。( 図中 1 )
- リソースを認可機構へ登録する。( 図中 2-a、 図中 2-b )
- 認可処理をアプリケーションへ組み込む。 ( 図中 3 )
- リソースのキャッシュを検討・実装する。 ( 図中 4 )
1. リソースを認可機構でどう表現するかを決める。
アプリケーションのリソースを認可機構でどう表現するかを決めます。
以下のような事を作業を開始する前に決めておくと作業がスムーズに進められます。
- リソースが使用するアクション
- リソースのURI書式
- リソースのグルーピングと階層構造
2. リソースタイプを実装する。
ResourceType クラスを実装します。( 図中 1 )
認可機構へのプラグインとしてリソースタイプクラスを実装します。
リソースタイプは認可対象となる実体の情報から認可機構上のリソースへの関連付けやリソースの持つアクションやURI書式についての責務を持っています。
3. リソースを認可機構へ登録する。
管理者が認可設定ができるように、アプリケーションのリソースを認可機構へ登録します。
認可設定を管理する対象はリソースとして予め認可機構に登録しておかなければなりません。
稼働前に必要になるリソースグループやリソースの情報がある場合はインポートファイルとして用意しておき、セットアップなどで投入しておきます ( 図中 2-a ) 。
アプリケーション側で認可対象としたいものが増えたり減ったりした場合、それに合わせて認可機構上のリソースも追加削除が必要になります ( 図中 2-b ) 。
4. 認可処理をアプリケーションへ組み込む。
ここまでで認可リソースの準備ができているはずなので、アプリケーションに認可機構と連携する実装を組み込みます ( 図中 3 ) 。
- 適切なタイミングでリソースに対して認可要求を行う
- アプリケーションで登録したリソースの認可設定を認可設定画面部品を呼び出して行う
5. リソースのキャッシュを検討・実装する。
必要であれば、リソースのキャッシュを実現する ResourceTypeCacheController クラスを実装します。 ( 図中 4 )
リソースが頻繁に利用される場合は、キャッシュを組み込むことでパフォーマンスを改善できます。
キャッシュを組み込む際には、リソースのキャッシュコントローラクラスを実装します。
キャッシュコントローラは、リソースタイプごとに定義することができます。
キャッシュコントローラを実装しない場合、リソース情報取得のたびにデータベースへのアクセスが発生します。
上記に加えて、認可ポリシーのキャッシュ可否を検討してください。
認可ポリシーのキャッシュを有効にするには、新たに定義したリソースタイプを「認可ポリシーキャッシュ対象設定」に追加します。
詳細は以下をご参照ください。
http://www.intra-mart.jp/download/product/iap/setup/im_configuration_reference/texts/im_tenant/policy-cache-config/index.html
以上を実施すると、独自のリソースを追加することが可能となります。
詳細は「認可 拡張プログラミングガイド」の「 リソース拡張ガイド 」をご参照ください。
このガイドでは、アプリケーションの認可対象をリソースとして追加するために、独自のアクションを定義する方法やリソースの構成の方法、
アプリケーションからの認可要求の仕方などについて説明しています。
アプリケーションの管理機能内で認可設定画面を部分的に呼び出す方法についても解説しています。
また、サンプルとして、新しいリソースタイプを作成し、データに対して「作成」「参照」「更新」「削除」のアクションを定義する例も解説しております。
サンプルをご活用いただき、アプリケーションにマッチしたリソースの拡張をご検討いただければと思います。