開発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

ワークフロー関連APIのver4.3/ver5.0対比表

ワークフロー関連のAPIがver5.0になり一部変更されています。 以下の添付資料はver4.3とver5.0のAPIの変更リストです。 参考にしてください。 →workflowAPI 対比表(ZIP …

no image

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

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

no image

IM-Workflow パラメータチューニング

IM-Workflowは、パッチにより様々なパラメータが追加されています。 特にパッチ4と先日リリースしたパッチ5での効果が大きいので、以下にご紹介致します。 XMLキャッシュ パッチ4からの機能です …

no image

e Builder Application Producer v7.2での開発方法について

本日、「intra-mart e Builder Application Producer (以下 Application Producer と略記)」をリリースさせて頂きました。Applicatio …

no image

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

この記事は、intra-mart Advent Calendar 2013 第12日の記事です。 今回は「認可リソースの拡張方法」をご紹介したいと思います。 intra-mart Accel Plat …