開発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 Advent Calendar 2013 第5日:ViewCreatorは、データベース以外も覗けますよ!

この記事は、intra-mart Advent Calendar 2013 第5日の記事です。 ViewCreatorは、データベースのテーブルを参照するツールとご紹介してきましたが、実は、Accel …

no image

IM-JSDocとQuick Sequence Diagram Editorの連携

こんにちは。開発本部の齊藤悠です。 今回は、業務スケルトンのTipsということで、完全に隠し機能となってしまった機能を紹介します。 —IM-JSDocとQuick Sequence Diagram …

no image

Formaの画面遷移を制御するには

今回のブログ記事では、スクリプトを利用してFormaの画面遷移を制御する方法を紹介します。 目次 条件に応じて遷移先を変更する フォーム遷移設定 サンプルコード サンプルアプリケーション 処理後の遷移 …

no image

intra-mart Advent Calendar 2013 第16日:ユーティリティメニュー(右上のヤーツ)の機能を追加、削除する方法

この記事は、intra-mart Advent Calendar 2013 第16日の記事です。 先日、ご紹介した「intra-mart Advent Calendar 2013 第7日:個人設定メニ …

no image

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

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