データ参照表示時のページへのアクセス権を認可で制御する方法

この CookBook では、ViewCreator の「データ参照」表示時のアクセス権を認可で制御する方法について紹介しています。

データ参照の参照権では、その定義を利用してデータを見ることができるかどうかを設定可能ですが、データ参照表示画面のURLに対する制御ではありません。
参考: ViewCreator 管理者操作ガイド - 参照権の設定

そのため、たとえばデータ参照のURLをサイトマップに登録して利用しようとしたとき、参照権を持たないユーザがサイトマップを表示した場合であってもサイトマップにリンクが表示されてしまいます。
※リンクを押下するとエラー画面に遷移します。

この CookBook では、個々のデータ参照(リスト集計またはサマリ集計)表示画面の新しいURL1つに対して認可リソースを1つ作成することで、そのような問題に対処する方法をご紹介します。

レシピ

  1. ルーティング定義の作成
  2. 認可リソースの作成とアクセス権の設定
  3. サイトマップへの登録

ルーティング定義の作成

IM-Juggling のプロジェクト配下に conf/routing-jssp-config/im_cookbook_196411_viewcreator.xml を以下の内容で作成します。

<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-config
  xmlns="http://www.intra-mart.jp/router/routing-jssp-config"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config ../../schema/routing-jssp-config.xsd" >
  <!-- path属性の im_cookbook/196411/viewcreator/dataview/new_list の部分は任意の文字列に変更可能です。(この部分が新しいURLとなります) -->
  <!-- /{dataview_cd} の部分は変更せず、記載例のままご利用ください -->
  <file-mapping path="/im_cookbook/196411/viewcreator/dataview/new_list/{dataview_cd}" page="viewcreator/views/dataview/list">
    <authz uri="service://im_cookbook/196411/viewcreator/dataview/{dataview_cd}" action="execute" />
  </file-mapping>

</routing-jssp-config>

参考: セットアップガイド - IM-Juggling とは
参考: 設定ファイルリファレンス - スクリプト開発モデルルーティング設定

war ファイルの作成とデプロイ

下記ガイドの手順に従って WARファイルを作成(出力)してください。
セットアップガイド - WARファイルの出力

下記ガイドの手順に従って WARファイルをデプロイしてください。
セットアップガイド - デプロイ

認可リソースの作成とアクセス権の設定

認可リソースの作成

テナント管理者でログインして認可設定画面を開き、下記ガイドの手順に従って認可リソースを追加してください。
テナント管理者操作ガイド - リソースを追加する

※データ参照定義1つに対して認可リソースを1つ作成するため、適宜リソースグループを作成して管理しやすいようにしてください。

「リソースURI」を im_cookbook_196411_viewcreator.xml の authz タグの uri の設定に従って「service://im_cookbook/196411/viewcreator/dataview/%データ参照コード%」としてください。
%データ参照コード% の部分は認可制御を行いたいデータ参照定義のデータ参照コードに置き換えてください。
例) service://im_cookbook/196411/viewcreator/dataview/5i7urzmesvqqip4

データ参照コードについては、下記ドキュメントを参照してください。
ViewCreator 管理者操作ガイド - リスト集計の作成

アクセス権の設定

作成した認可リソースに対してアクセス権を設定します。
ここでは例として、認証済みユーザに対して許可を行います。

注意点として、データ参照編集画面の「参照権」も認可の設定と同じになるように合わせておく必要があります。
ここでは、認可リソースを認証済みユーザに対して許可したため、参照権も同様に認証済みユーザに対して許可します。

参照を許可されたユーザ(認証済みユーザ)が %コンテキストパス%/im_cookbook/196411/viewcreator/dataview/new_list/5i7urzmesvqqip4 にブラウザからアクセスすると、データ参照コードが 5i7urzmesvqqip4 の集計画面を表示できます。
例) http://example.com/imart/im_cookbook/196411/viewcreator/dataview/new_list/5i7urzmesvqqip4

サイトマップへの登録

最後に、アクセス可能になったURLをサイトマップに登録します。

登録手順の詳細は下記ドキュメントを参照してください。
テナント管理者操作ガイド - メニューを設定する

作成したデータ参照の認可リソースが許可されている場合はサイトマップにメニューアイテムが表示されます。

リンクを押下すると、新しく定義したURLでデータ参照が表示されます。

許可されていない場合は、サイトマップでメニューアイテムが表示されていないことを確認できます。

他のデータ参照についても同様に認可制御を行いたい場合は、「認可リソースの作成とアクセス権の設定」の操作を繰り返します。
ルーティング定義の作成(修正)は不要です。

クロス集計やグラフ集計のデータ参照を認可制御したい場合

クロス集計やグラフ集計のデータ参照を認可制御したい場合は、ルーティング定義を以下のように設定してください。

<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-config
  xmlns="http://www.intra-mart.jp/router/routing-jssp-config"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config ../../schema/routing-jssp-config.xsd">
  <!-- クロス集計の場合 path属性の /im_cookbook/196411/viewcreator/dataview/new_cross/ の部分は任意の文字列に変更可能です -->
  <file-mapping path="/im_cookbook/196411/viewcreator/dataview/new_cross/{dataview_cd}" page="viewcreator/views/dataview/cross">
    <authz uri="service://im_cookbook/196411/viewcreator/dataview/{dataview_cd}" action="execute" />
  </file-mapping>

  <!-- グラフ集計の場合 path属性の /im_cookbook/196411/viewcreator/dataview/new_graph/ の部分は任意の文字列に変更可能です -->
  <file-mapping path="/im_cookbook/196411/viewcreator/dataview/new_graph/{dataview_cd}" page="viewcreator/views/dataview/graph">
    <authz uri="service://im_cookbook/196411/viewcreator/dataview/{dataview_cd}" action="execute" />
  </file-mapping>
</routing-jssp-config>