開発Blog

intra-mart Advent Calendar 2013 第12日:認可リソースの拡張方法

投稿日:

この記事は、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. リソースタイプを実装する。( 図中 1 )
  3. リソースを認可機構へ登録する。( 図中 2-a、 図中 2-b )
  4. 認可処理をアプリケーションへ組み込む。 ( 図中 3 )
  5. リソースのキャッシュを検討・実装する。 ( 図中 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


以上を実施すると、独自のリソースを追加することが可能となります。

詳細は「認可 拡張プログラミングガイド」の「 リソース拡張ガイド 」をご参照ください。
このガイドでは、アプリケーションの認可対象をリソースとして追加するために、独自のアクションを定義する方法やリソースの構成の方法、
アプリケーションからの認可要求の仕方などについて説明しています。
アプリケーションの管理機能内で認可設定画面を部分的に呼び出す方法についても解説しています。

また、サンプルとして、新しいリソースタイプを作成し、データに対して「作成」「参照」「更新」「削除」のアクションを定義する例も解説しております。

サンプルをご活用いただき、アプリケーションにマッチしたリソースの拡張をご検討いただければと思います。

 

-開発Blog
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

新ワークフロー移行ガイド

  ※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。   「新ワー …

no image

iCEC2011 IM-ContentsSearch

4/26に開催された「intra-mart Certified Evangelist Conference 2011(iCEC2011)」での講演資料を公開します。 IM-ContentsSearch …

no image

iWP Ver7.xでのチューニング

開発本部の大西です。 開発は半期末とかあまり関係ないと思いきや、諸般の事情でいろいろと大変な今日この頃です。 江本さんがebuilderのネタばかり書くので、傷食気味にならないように、季節柄、チューニ …

no image

弊社の社内システムについて

こんにちは、開発本部の大西です。 さすがに、まだ、外部に公開できるAccelPlatformの導入事例がないので、皆さんお困りだと思いますので、参考になるかはわかりませんが、弊社の社内システムで利用し …

no image

intra-martベースモジュール ver4.X インストール・設定時のトラブルガイド

  ※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。   ベースモ …