intra-mart Accel Platform TERASOLUNA Server Framework for Java (5.x) プログラミングガイド 第15版 2019-08-01

ショートカットアクセス機能

ショートカットアクセス機能とは

ショートカットアクセス機能は、初期アクセス URL にショートカットアクセス用の URL を指定することによって、ログイン後の画面を任意の画面に取り替えることができる機能です。
ショートカットアクセス機能を用いると、ログイン後の画面で任意のページを表示することが可能になります。

ショートカットアクセス URL

ショートカットアクセス用の URL は、ショートカットIDを含む以下の URL になります。
http:// <server> / <context-path> /user/shortcut/ <ショートカットID>
<記述例>
http://localhost/imart/user/shortcut/5i4deh98wou5uuc

ショートカット ID の作成

ショートカット ID は、表示するページの情報およびセキュリティの情報に紐づく ID となります。
ショートカット IDは、表示するページの情報およびセキュリティの情報を指定してAPI を用いて作成します。
ログイン後に表示する画面に、/sample/shortcut を指定する場合のショートカット IDの作成手順を説明します。
// ショートカットマネージャの作成
ShortCutManager manager = new ShortCutManager();

// ショートカット情報の作成
ShortCutInfo shortCutInfo = new ShortCutInfo();

// 表示する URL
shortCutInfo.setUrl("/sample/shortcut");

// 表示する URL に渡すパラメータの設定(任意指定)
shortCutInfo.setUrlParam("arg1","value1");
shortCutInfo.setUrlParam("arg2","value2");

// 表示許可を行うユーザ
shortCutInfo.setAllowsUsers(new String[]{"guest","ueda"});

// ログイン認証が必要かどうか?
shortCutInfo.setAuth(true);

// この情報の有効期限(作成時から10日間有効)
shortCutInfo.setValidEndDate(manager.addValidEndDate(10));

// ショートカットID 作成
String shortCutId = manager.createShortCut(shortCutInfo);

ショートカット拡張検証機能

拡張検証機能では、ショートカット情報の URL の表示を許可ユーザ以外で、ログインしたユーザに対して検証プログラム利用して、ページの表示許可を与えるかどうかの判定を追加で行う機能です。
拡張検証コードは、検証プログラムのコード名を表します。
拡張検証パラメータは、検証プログラムに渡されるパラメータとなります。

// ショートカットマネージャの作成
ShortCutManager manager = new ShortCutManager();

// ショートカット情報の作成
ShortCutInfo shortCutInfo = new ShortCutInfo();

// 表示する URL
shortCutInfo.setUrl("/sample/shortcut");

// 表示する URL に渡すパラメータの設定(任意指定)
shortCutInfo.setUrlParam("arg1","value1");
shortCutInfo.setUrlParam("arg2","value2");

// 表示許可を行うユーザ(検証機能のみを利用する場合は、設定しなくてもよい。)
shortCutInfo.setAllowsUsers(new String[]{"guest","ueda"});

// ログイン認証が必要かどうか?(検証機能を利用する場合は、設定した値にかかわらず、trueとなります。)
shortCutInfo.setAuth(true);

// この情報の有効期限(作成時から10日間有効)
shortCutInfo.setValidEndDate(manager.addValidEndDate(10));

shortCutInfo.setValidationCode("RoleUser"); // 追加でユーザが許可されるかどうかの検証コード
shortCutInfo.setValidationParam(""); // 検証処理に渡される追加のパラメータ   

// ショートカットID 作成
String shortCutId = manager.createShortCut(shortCutInfo);

検証プログラムの作成

検証プログラムの作成は jp.co.intra_mart.foundation.security.shortcut.ShortCutValidator を実装して作成します。

実装するメソッド : boolean isAllowUser(String groupId, ShortCutInfo shortcutInfo, String userId) throws AccessSecurityException

このメソッドがtrueを返す場合は、許可されたユーザとなります。
package jp.co.intra_mart.foundation.security.shortcut;

import java.util.regex.Pattern;

import jp.co.intra_mart.foundation.security.exception.AccessSecurityException;

/**
 * 正規表現で許可ユーザを検証するショートカット検証クラス。 <br>
 * <br>
 * ショートカット情報の拡張検証パラメータに指定されている<br>
 * 正規表現とユーザ名が一致している場合に許可します。
 * @author INTRAMART
 * @version 8.0
 * @since 7.0
 */
public class RegExpUserShortCutValidator implements ShortCutValidator {

    /**
     * ショートカット情報の拡張検証パラメータに指定した正規表現がユーザIDと一致するか判定します。<br>
     * @param groupId ログイングループID
     * @param shortcutInfo ショートカット情報
     * @param userId ユーザID
     * @return 許可されたユーザであるなら true。
     * @throws AccessSecurityException 検証中にエラーが発生した場合スローされます。
     */
    @Override
    public boolean isAllowUser(final String groupId, final ShortCutInfo shortcutInfo, final String userId) throws AccessSecurityException {
        return Pattern.matches(shortcutInfo.getValidationParam(), userId);
    }

}

検証コードと検証プログラムの設定

IM-Jugglingよりショートカットアクセス設定(short-cut-config.xml)に対して、以下の設定を追加します。

<validator>を追加します。
  • 属性 code には、検証コードを設定します。

  • 属性 class には、検証プログラムのクラスを設定ます。

    <?xml version="1.0" encoding="UTF-8"?>
    <short-cut-config>
      <short-cut-accessor>
        <short-cut-accessor-class>jp.co.intra_mart.foundation.security.shortcut.StandardShortCutAccessor</short-cut-accessor-class>
        <error-page>/user/shortcut/error</error-page>
        <main-page>/home</main-page>
        <validator code="RegExpUser" class="jp.co.intra_mart.foundation.security.shortcut.RegExpUserShortCutValidator"/>
        <validator code="RoleUser" class="jp.co.intra_mart.foundation.security.shortcut.RoleUserShortCutValidator"/>
        <validator code="Script" class="jp.co.intra_mart.foundation.security.shortcut.ScriptShortCutValidator"/>
        <validator code="sample" class="jp.co.intra_mart.foundation.security.shortcut.SampleValidator"/>
      </short-cut-accessor>
    </short-cut-config>
    

注意

IM-Jugglingよりショートカットアクセス設定(short-cut-config.xml)を編集するには、intra-mart Accel Platfom 2013 Autumn 以降が必要となります。
intra-mart Accel Platfom 2013 Autumn 以前の場合は、作成されたwarファイルより直接編集してください。

標準の検証コードについて

標準で3種類の検証コードが登録されています。
  • 拡張検証パラメータに指定された正規表現にマッチするユーザ ID のユーザを許可ユーザとします。

    検証コード 検証プログラム
    RegExpUser jp.co.intra_mart.foundation.security.shortcut.RegExpUserShortCutValidator

  • 拡張検証パラメータに指定されたロール ID を持つユーザを許可ユーザとします。

    検証コード 検証プログラム
    RoleUser jp.co.intra_mart.foundation.security.shortcut.RoleUserShortCutValidator

  • スクリプトを実行して許可ユーザを検証します。

    検証コード 検証プログラム
    Script jp.co.intra_mart.foundation.security.shortcut.ScriptShortCutValidator
    ショートカット情報の拡張検証パラメータに指定したスクリプトの isAllowUserメソッドで判定します。
    このモジュールを利用する場合は、ショートカット情報の拡張検証パラメータにスクリプトのパスを指定します。
    拡張子はつけません。

    例 : shortcut/validator

    また、スクリプトのisAllowUserメソッドに対して、パラメータ(param)を渡したい場合は、ショートカット情報の
    拡張検証パラメータのスクリプトのパスに続いて、カンマ区切りで、パラメータを指定します。
    例 : shortcut/validator,パラメータ値
    パラメータ値が指定されていない場合は、スクリプトの isAllowUser メソッドの param 引数には空文字列が渡されます。
    スクリプトの isAllowUser メソッドのインタフェース

    Boolean isAllowUser(String groupId, ShortCutInfo shortcutInfo,String userId,String param)