intra-mart Accel Platform 認可仕様書 第14版 2020-08-01

認可要求インタフェース

ここでは認可を要求するための機能について、個別に解説します。

認可機構に対して、認可判断の結果を問い合わせる(認可要求を行う、といいます)場合に使用するためのインタフェースが認可要求インタフェースです。これにはAPIによる方法とimartタグ/カスタムタグによる方法があります。

アプリケーションなどが認可機構との連携を行いたい場合このインタフェースを使用して認可判断を要求します。認可要求インタフェースは認可判断機能を呼び出して、その結果を呼び出し側に取り次ぐ役割を持っています。

APIによる認可要求

APIにより認可判断要求を行う場合、AuthorizationClient を使用します。 AuthorizationClient のインスタンスを取得するにはAuthorizationClientFactory を使用します。 完全修飾クラス名は以下の通りです。

AuthorizationClient
jp.co.intra_mart.foundation.authz.client.AuthorizationClient
AuthorizationClientFactory
jp.co.intra_mart.foundation.authz.client.AuthorizationClientFactory

このインタフェースの詳細はAPIリストを参照してください。以下に認可要求を行うサンプルを示します。

// 1. ファクトリからインスタンスを取得
final AuthorizationClient client = AuthorizationClientFactory.getInstance().getAuthorizationClient();

// 2-a. URIを使用した認可要求
//      ここで指定しているURIはルーティングテーブルで認可設定画面のURLに設定しているURI
final AuthorizeResult result1 = client.authorize("service://authz/settings/basic", "execute");

if (result1.equals(AuthorizeResult.Permit)) {
    /*-- 許可された場合の操作 --*/
}

// 2-b. リソースタイプのサポートするリソースモデルを使用した認可要求
//      セットしているパスは2-aで指定しているリソースを指しているURL
final GeneralServiceModel service = new GeneralServiceModel();
service.setPath("/tenant/authz/settings");

final AuthorizeResult result2 = client.authorize(service, "execute");
if (result2.equals(AuthorizeResult.Permit)) {
    /*-- 許可された場合の操作 --*/
}

imartタグ/カスタムタグによる認可要求

imartタグ、JSPのカスタムタグとして認可機構との連携情報を埋め込んで、認可判断の結果からコンテンツの表示・非表示をコントロールできます。

imAuthzタグ

リソースのURIとアクションを直接指定してコンテンツの表示/非表示をコントロールするタグです。以下に認可と連携したページ表示をコントロールする例を示します。指定可能な属性の詳細はAPIリストを参照してください。

Java EE 開発モデル( JSP )の例

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.intra-mart.co.jp/taglib/im-tenant" prefix="imt" %>


<h1>認可要求のサンプル</h1>

<imt:imAuthz uri="service://authz/settings/basic" action="execute" >
   <div>認可されていればここが表示されます。</div>
</imt:imAuthz>

<imt:imAuthz uri="service://authz/settings/basic" action="execute" negative="<%= Boolean.TRUE %>">
   <div>認可されていなければここが表示されます。</div>
</imt:imAuthz>

注意

属性 negative は intra-mart Accel Platform 2013 Autumn 以降のバージョンで利用可能です。

スクリプト開発モデル(プレゼンテーションページ)の例

<h1>認可要求のサンプル</h1>

<imart type="imAuthz" uri="service://authz/settings/basic" action="execute" >
   <div>認可されていればここが表示されます。</div>
</imart>

<imart type="imAuthz" uri="service://authz/settings/basic" action="execute" negative>
   <div>認可されていなければここが表示されます。</div>
</imart>

注意

属性 negative は intra-mart Accel Platform 2013 Autumn 以降のバージョンで利用可能です。

imUrlAuthzタグ

ルーティングテーブルに設定されているパスを指定してコンテンツの表示/非表示をコントロールするタグです。このタグは内部でルータにパスに相当するリソースURIとアクションを問い合わせ、その結果から認可要求を行い、表示/非表示を判断しています。指定可能な属性の詳細はAPIリストを参照してください。

Java EE 開発モデル( JSP )の例

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.intra-mart.co.jp/taglib/im-tenant" prefix="imt" %>


<h1>認可要求のサンプル</h1>

<imt:imUrlAuthz url="/tenant/authz/settings" >
   <div>認可されていればここが表示されます。</div>
</imt:imUrlAuthz>

<imt:imUrlAuthz url="/tenant/authz/settings" negative="<%= Boolean.TRUE %>">
   <div>認可されていなければここが表示されます。</div>
</imt:imUrlAuthz>

注意

属性 negative は intra-mart Accel Platform 2013 Autumn 以降のバージョンで利用可能です。

スクリプト開発モデル(プレゼンテーションページ)の例

<h1>認可要求のサンプル</h1>

<imart type="imUrlAuthz" url="/tenant/authz/settings" >
   <div>認可されていればここが表示されます。</div>
</imart>

<imart type="imUrlAuthz" url="/tenant/authz/settings" negative>
   <div>認可されていなければここが表示されます。</div>
</imart>

注意

属性 negative は intra-mart Accel Platform 2013 Autumn 以降のバージョンで利用可能です。

認可クライアント

認可と連携して情報のアクセス制御や表示制御を行っているアプリケーションを認可クライアントと呼称しています。

../../../_images/AuthzClient.png

デフォルトで存在する認可クライアント

intra-mart Accel Platform の中にはすでに認可クライアントとなっているコンポーネントが存在します。以下にそのコンポーネントと、認可とのかかわりの概要について説明します。実際にどのような処理が行われているかの詳細については各コンポーネントの仕様書を参照してください。

  • ルータ(テナント管理機能モジュール)

    ルータはルーティングテーブルに定義されたURLのパスと実行するプログラムの実体を結びつける処理を行っています。ルータはURLにアクセスされるタイミングでそのURLへのアクセスが許可されるかを認可要求インタフェースを使用して問い合わせ、その結果許可されていなければそのページの処理を行わず、エラーステータスを返却します。

    ルーティングテーブルにはリソースURI・アクションを定義できるようになっており、URLを一つのリソースとして認可機構に対して認可要求を行っています。

    ルータは認可問い合わせに必要なリソースを自動的には管理しないため、ルーティングテーブルに対してURLを追加した場合、それに対応するリソースの定義を認可機構にも追加しなければなりません。

  • メニュー(テナント管理機能モジュール)

    メニューはデータ構造的にはメニューグループとメニューアイテムに分かれています。メニューグループはひとまとまりのメニューのツリーを表し、メニューアイテムは各機能へのリンクとしてURLを保持している情報です。

    メニューでは2段階の認可を行っており、まずメニューグループの認可要求を行い、それが許可されればその配下の各アイテムに対する認可要求を個別に行います。メニュー表示時には、認可で許可されたアイテムのみがメニューとして表示されます。

    メニューAPIはメニューグループと1対1で対応するリソースを自動的に管理しており、メニューグループを追加・削除した場合同期的に認可機構側のリソースを追加・削除します。

  • ポータルモジュール

    ポータルは3種類のリソースを定義しています。

    1. ポータルの権限 ポータルを表すリソースです。ポータルの使用権限を管理します。ユーザはここで許可されたポータルを見ることができます。
    2. ポートレットの使用権限 ポートレットを表すリソースです。ポートレットの使用権限を管理します。 ユーザは許可されたポートレットのみ、自分のポートレットに追加できます。
    3. ポートレット設定の変更権限 ポートレットの設定を変更する権限を管理します。 ユーザは許可されたポートレットのみ、ポートレット設定を変更できます。

    それぞれポータルやポートレットの追加や削除に伴って同期的に認可機構側のリソースも変更されます。

  • IM共通マスタ 認可連携モジュール

    IM共通マスタは会社に関して認可処理を行っています。特定の会社の情報を参照できるかどうかを認可機構を使用して管理します。この認可設定によって検索画面などにおいて許可されていない会社の情報は表示されなくなります。IM共通マスタで会社を追加・削除すると同期的に認可機構側のリソースも変更されます。

  • WebService認証・認可モジュール

    WebService認証・認可モジュールを使用すると、Apache Axis 2と連携してWebServiceを作成できます。このモジュールは認可機構と連携しており、Apache Axis の使用する service.xmlの中に<authz>タグを追加できます。ここにルータ同様にサービスに対応するリソースURI・アクションを設定します。ルータ同様認可設定で許可されていなければサービスの実行を行わず、エラーとします。

  • SAStruts Framework on Accel Platformモジュール

    SAStruts Framework on Accel Platformモジュールを使用すると、@Authz アノテーションを使ってアクションクラスやメソッドに対してルータ同様にリソースURI・アクションを定義できます。ルータ同様認可設定で許可されていなければ処理の実行を行わず、エラーとします。