開発Blog

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

投稿日:2014-04-16 更新日:

今回は認可の閉塞機能 (※1) についての紹介です。

2013 Summer から提供されていた認可リソースの閉塞機能ですが、2013 Winter で機能を追加して、アクション単位での閉塞 (※2) ができるようになりました。
さらに、閉塞状態を変更するための API が公開され、簡単に外部から認可リソースの閉塞状態を更新することができるようになっています。
これによって、今までは認可管理者が画面上から設定していた閉塞状態の変更を自動化できるようになりました。

閉塞 API の利用方法や、API を利用してどのようなことができるのか、サンプルを交えて説明いたします。

(※1) 認可の権限状態を変更しないまま、特定のリソースへのアクセスを制限する機能です。
(※2) 例えばメニューの場合、2013 Summer ではグローバルナビを閉塞すると参照・管理権限の両方が制限されましたが、2013 Winter からは参照と管理のいずれかを閉塞することができるようになりました。

閉塞 API の使い方

閉塞状態を取得・変更するには、ResourceBlocker API を使用します (Java の API のみ提供)。
http://www.intra-mart.jp/apilist/iap/javadoc/all-dev_apidocs/jp/co/intra_mart/foundation/authz/services/admin/block/ResourceBlocker.html

ResourceBlocker API は単純な3種類のメソッドを持っており、それぞれ #block, #unblock, #isBlock があります。
#block は閉塞、#unblock は閉塞を解除します。 そして #isBlock は閉塞状態を取得します。

引数にリソースグループID のみを指定するとリソース (全アクション) が閉塞され、アクションを示すリソースタイプID とアクションID を追加指定すればアクション単位での制御ができます。
動作についての詳細は API ドキュメントをご覧ください。

さて、この記事で紹介するチュートリアルでは、システムの定期メンテナンスシーンを例として、以下の動作を行ってみます。

  1. 定期メンテナンス時間になったら、閉塞機能を使用して、自動的にグローバルナビのリンクを非表示にします。
  2. 定期メンテナンス終了後、IM-Workflow を使い上司の承認を得た後、自動的にグローバルナビのリンクを戻します。
使用例1: 定期メンテナンスのため、ある特定の時刻に閉塞する (ジョブを利用した閉塞)

メンテナンス時間に入ったとき、自動的にグローバルナビ (PC版) を閉塞する例を考えてみます。
まず最初に、自動的に閉塞を実行するために、以下のようなジョブを作ります。

ResourceBlocker#block メソッドの引数には、閉塞したいリソースグループのIDを指定してください。

次にジョブ管理画面で 「閉塞ジョブ」 を登録します。
このとき、 「実行プログラム」 には上記で作成したクラス名の完全修飾子 (パッケージ名を含めたフル名) を設定してください。

さて、ジョブが実行されると、グローバルナビからほとんどのメニューが表示されなくなるはずです。
試しにすぐ実行してみると、グローバルナビには 「サイトマップ」 のリンク以外表示されなくなりました。

以下の URL にアクセスして、認可設定画面を開いてみましょう。
http://<HOST>:<PORT>/<CONTEXT_PATH>/tenant/authz/settings/menu_group
「グローバルナビ (PC用)」が閉塞されていることが確認できます。

使用例2: 上司から許可をもらい自動的に閉塞を解除する (IM-Workflow を利用した閉塞解除)

次に IM-Workflow を使用して、上司から承認を得たら (案件が完了したら) 自動的にグローバルナビ (PC版) の閉塞を解除する例を考えてみます。
まず最初に、自動的に閉塞を解除するために、以下のような案件終了処理を作成します。

次に IM-Workflow でコンテンツ、ルート、フローを定義します。
(今回はチュートリアルのため、コンテンツ定義は IM-Workflow のサンプルを流用して、上記の案件終了処理を追加します。)

ルートは単純な直線で、メンテナンスを行った 「認可管理者」 が上司にあたる 「テナント管理者」 に閉塞解除依頼を行ってみます。

フロー定義で、「案件終了時実行プログラム」 にコンテンツ定義で登録した閉塞解除プログラムが登録されていることを確認します。

さて、実際にワークフローを流してみましょう。 ここでは 「認可管理者」 はサンプルユーザの青柳としています。
青柳でログインして、ワークフローから 「閉塞解除」 を申請します。

次にテナント管理者でログインして、未処理一覧から 「閉塞解除」 を選択し、承認します。

承認終了後、画面を再表示すると、グローバルナビの表示が復活していることが確認できました。

認可設定画面を開くと、閉塞が解除されていることも確認できます。

まとめ

認可リソースの閉塞 API が公開されたことで、このチュートリアルのように、特定の画面やメニューの表示・非表示制御を自動化することができました。
これにより、例えば、計画メンテナンスを行う際に、一般ユーザからのアクセスを、 時刻を指定して 遮断することが可能になります。
今回はジョブやIM-Workflow を利用して閉塞とその解除処理を自動化しましたが、他の連携プログラムを利用すればさらに多彩な動作を行うことができるようになるかと思います。

閉塞 API の実行は認可設定画面と同様に即時反映されますのでご注意ください。
機会がありましたらぜひご利用いただければと思います。

 

-開発Blog
-

執筆者:


comment

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

関連記事

no image

iCEC2011 eBuilder AppProducer

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

no image

e Builder Application ProducerでDAO開発♪

こんにちは、開発本部の江本です。 前回の記事「e Builder Application ProducerでDB設計♪」で、DB設計を紹介しました。 今回は、設計したDBに対して検索用DAOの作成方法 …

no image

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

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

no image

ロードバランス環境の構築方法

Webサーバと intra-mart Accel Platform 間でロードバランスを行いながら連携を行う設定例を紹介します。 以下の手順を参考として、各種要件・ご利用の環境に合わせて環境構築を行っ …

no image

intra-mart Advent Calendar 2013 第7日:個人設定メニューの順番を変更する方法(右上のヤーツ)

この記事は、intra-mart Advent Calendar 2013 第7日の記事です。 今回は「個人設定メニューの順番変更方法」をご紹介したいと思います。 intra-mart Accel P …