開発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とリッチクライアントツールCurlの連携について

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

no image

Microsoft SqlServer で シーケンステーブルを扱う

intra-mart Accel Platform では、SqlServerを利用する場合、JDBCの接続プロパティに selectMethod=cursor を設定します。この接続プロパティを使用す …

no image

データベースの登録、更新、削除メソッドをカスタマイズする

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

no image

認可の閉塞機能を使いこなす

今回は認可の閉塞機能 (※1) についての紹介です。 2013 Summer から提供されていた認可リソースの閉塞機能ですが、2013 Winter で機能を追加して、アクション単 …

no image

業務スケルトン

こんにちは。開発本部の大西です。 きょうは、昨年11月末にリリースしたe Builder Application Developer/e Builder Version 7.1 Patch3に機能追加 …