5.3.3.10. 外部メニュー連携¶
intra-mart Accel Platform の外部メニュー連携を行うための接続先情報を設定します。注意
外部メニュー連携は、2013 Spring(Climbing) から利用することが可能です。
5.3.3.10.1. 外部メニュー連携とは¶
外部メニュー連携とは、シングルサインオン(以下 SSO と記述します)を利用してシステムを構築している場合に、複数の メニュープロバイダ のメニュー情報を intra-mart Accel Platform 上で1つのメニューとして表示し、利用することを可能とするための機能です。取得したメニュー情報は、テーマのグローバルナビ、ツリーメニューおよびサイトマップに表示されます。intra-mart Accel Platform のログインユーザのユーザコードと、メニュープロバイダのユーザコードは一致している必要があります。
5.3.3.10.1.1. メニュープロバイダとは¶
メニュー情報を取得するための接続先の Webアプリケーションを、メニュープロバイダと呼びます。外部メニュー連携機能では、メニュープロバイダから SOAP Webサービスを利用してメニュー情報を取得します。メニュープロバイダには、あらかじめ Webサービスのモジュールをインストールする必要があります。Webサービスモジュールに関しては、「 Webサービスモジュール 」 を参照してください。
5.3.3.10.1.2. メニュークライアントとは¶
メニュープロバイダからメニュー情報を取得し、1つのメニュー情報に統合して表示する側の Webアプリケーションを、メニュークライアントと呼びます。ユーザは、メニュークライアントとして稼働する intra-mart Accel Platform にアクセスすることで、複数の Webアプリケーションのサービスを意識することなく利用することが可能です。注意
外部メニュー連携機能を利用する場合は、連携する各アプリケーションサーバで、SSO による認証を行うことを推奨します。SSOを利用せずに、外部メニュー連携機能を利用した場合、以下の様な制限事項が発生します。
メニュープロバイダから取得したメニューにアクセスしても、自動的にログインされません。該当のページに権限設定がある場合、エラーページが表示されます。エラーページからログイン画面へ遷移してログインすることも可能ですが、ブラウザの設定や環境によっては正常にログインできない場合があります。また、メニュープロバイダが intra-mart Accel Platform の場合、グローバルナビを表示しない制御を行っていますが、ログインしていない状態でアクセスした場合は制御が行われず、メニュークライアントのグローバルナビとメニュープロバイダのグローバルナビが2重に表示されます。 メニュークライアントとメニュープロバイダに別々にログインすることになるため、同じユーザであることが保証されません。外部メニュー連携で取得するメニュー情報は、メニュークライアントにログインしているユーザにひもづく情報です。メニュープロバイダに別のユーザでログインしていても画面上では判断できないため、誤ったオペレーションを行う可能性があります。 メニュークライアントからログアウトしても、メニュープロバイダ側は自動ログアウトされません。メニュープロバイダに直接アクセスすることで、ログイン状態のままアクセスが可能です。
5.3.3.10.1.3. IM-HybridSSO¶
2014 Summer(Honoka) から、intra-mart WebPlatform を対象とした簡易SSO機能として IM-HybridSSO が利用可能です。IM-HybridSSO については、「 iAP-iWP間SSO連携(IM-HybridSSO) 」を参照してください。IM-HybridSSO では、 intra-mart WebPlatform v7.2 patch7 で利用するための個別パッチモジュールが提供されています。個別パッチモジュールには IM-HybridSSO の機能以外に、patch8 で提供される予定の外部メニュー連携に関する不具合の修正が含まれます。不具合の内容については、個別パッチモジュールに添付する readme.txt を参照してください。
5.3.3.10.2. メニュークライアント環境構築手順¶
5.3.3.10.2.1. 外部メニュー連携モジュールの選択¶
IM-Juggling で、「追加機能」-「外部メニュー連携」モジュールを選択します。
5.3.3.10.2.2. メニュープロバイダの設定¶
「設定ファイル」タブから、「外部メニュー連携」-「外部メニュー連携接続先設定」を出力します。「外部メニュー連携接続先設定(menu-provider-config.xml)」に、以下のようにメニュープロバイダの設定を記述します。<?xml version="1.0" encoding="UTF-8"?> ... <menu-provider id="sample"> <end-point> http://<HOST>:<PORT>/<CONTEXT_PATH>/services/MenuService </end-point> <login-group> <接続先のログイングループID> </login-group> <user> <接続先ユーザのユーザコード> </user> <password> <接続先ユーザパスワード> </password> </menu-provider> ...
5.3.3.10.2.2.1. メニュープロバイダ情報について¶
設定する情報はあらかじめメニュープロバイダのシステム管理者から提供されている必要があります。以下の情報をメニュープロバイダのシステム管理者に問い合わせてください。
接続先エンドポイント メニュープロバイダの接続先URLです。以下のフォーマットです。http://<HOST>:<PORT>/<CONTEXT_PATH>/services/MenuService接続先ログイングループID メニュープロバイダが intra-mart WebPlatform の場合のログイングループIDです。メニュープロバイダが intra-mart Accel Platform の場合はテナントIDです。接続先ユーザコード Webサービスの権限を付与された Webサービス接続用ユーザのユーザコードです。接続先ユーザパスワード Webサービスの権限を付与された Webサービス接続用ユーザのパスワードです。
5.3.3.10.2.2.2. バーチャルテナントによる複数テナント運用時のメニュープロバイダの設定について¶
5.3.3.10.2.2.3. メニュープロバイダの設定順序について¶
メニュープロバイダは複数設定することが可能です。標準では、グローバルナビ、ツリーメニューおよびサイトマップには、設定された順に取得したメニュー情報が表示されます。グローバルナビの場合は、「editable」オプションを設定することで、以下の様な動作です。
- メニュー設定画面で表示対象を選択し、任意の位置に表示するように設定可能です。
- メニュー設定画面で選択しなかったメニュー情報は表示されません。
設定ファイルの詳細な設定内容については「 設定ファイルリファレンス 」-「 外部メニュー連携接続先設定 」 を参照してください。メニュー設定画面での表示順序の設定については「 テナント管理者操作ガイド 」-「 外部サイトのメニューリンクを登録する 」 を参照してください。注意
「editable」オプションは、2013 Autumn(Eden) から利用することが可能です。
5.3.3.10.3. メニュープロバイダから取得できる情報¶
メニュープロバイダからは、以下の情報が取得できます。
5.3.3.10.3.1. 一般ユーザが、メニューを表示する場合のメニュー情報¶
一般ユーザが、グローバルナビやサイトマップにメニューを表示する場合に取得できるメニュー情報です。メニュープロバイダからは、メニュークライアントにログインしているユーザが表示権限を持っているメニュー情報を取得します。intra-mart Accel Platform のログインユーザのユーザコードと、メニュープロバイダのユーザコードは一致している必要があります。取得できる主なメニュー情報は、以下の情報です。
- メニューの構成
- メニューの表示名
- メニュー情報の URL
「メニューの構成」は、メニュープロバイダで設定されているメニューのフォルダとアイテムの表示順、階層の情報です。「メニューの表示名」は、メニュープロバイダのユーザロケールの表示名です。メニュープロバイダとメニュークライアントのユーザロケールが一致しない場合、表示名のロケールは統一されません。「メニュー情報の URL」は、メニュープロバイダにアクセスする場合の絶対 URLです。メニュープロバイダが、プロキシサーバ等を利用してアクセスする必要がある場合は、メニュープロバイダ側で適切なベースURLを設定する必要があります。次項「 Webサービスモジュール 」で提供される、各 WebサービスモジュールごとのベースURLの設定方法を確認し、設定を行ってください。
5.3.3.10.3.2. メニュー管理者が、メニューを設定する場合のメニュー情報¶
メニュー管理者が、メニュー設定画面で表示対象と表示先を設定する場合に、設定元として取得できるメニュー情報です。メニュープロバイダからは、メニュークライアントのメニュー設定画面を操作しているユーザが、管理権限を持っているメニュー情報を取得します。intra-mart Accel Platform のログインユーザのユーザコードと、メニュープロバイダのユーザコードは一致している必要があります。取得できる主なメニュー情報は、以下の情報です。
- メニューの構成
- メニューの表示名
- メニュー情報の ID
「メニューの構成」は、メニュープロバイダで設定されているメニューのフォルダとアイテムの表示順、階層の情報です。「メニューの表示名」は、メニュープロバイダのユーザロケールの表示名です。ここで取得した表示名は、メニュー設定画面でのみ利用されます。グローバルナビなどに表示する場合は、「 一般ユーザが、メニューを表示する場合のメニュー情報 」で取得した表示名が利用されます。「メニュー情報の ID」は、グローバルナビなどに表示する場合の対象のメニュー IDです。メニュー設定画面で表示先を設定した場合、「プロバイダの ID」と「メニュー情報の ID」が保存されます。注意
外部メニュー連携サービス for intra-mart WebPlatform v7.2 で提供されるモジュールでは、一般ユーザは管理権限を持たないため、常に全てのメニュー情報を取得します。
5.3.3.10.4. Webサービスモジュール¶
イントラマートより提供される Webサービスは、以下のモジュールです。
- 外部メニュー連携サービス for intra-mart Accel Platform
- 外部メニュー連携サービス for intra-mart WebPlatform v7.2
5.3.3.10.4.1. 外部メニュー連携サービス for intra-mart Accel Platform¶
外部メニュー連携サービス for intra-mart Accel Platform は、オプションモジュールです。IM-Juggling で、「追加機能」-「Webサービス向け機能」-「外部メニュー連携 Webサービス」モジュールを選択して War を作成します。プロキシサーバ等を利用している場合、メニュー情報生成のため、ベースURLの設定が必要です。ベースURL設定は intra-mart Accel Platform 共通の設定を利用しています。 「ベースURL」の章を参照してください。Webサービスモジュールを有効にするためには、認可の設定を行う必要があります。Webサービス接続用のユーザを新規に作成し、認可設定により以下のリソースに実行許可を与えてください。 (既存のユーザに権限を与えることも可能です。)以下の2つのリソースに同じ権限を設定してください。
リソースの種類 : Webサービス
リソースグループ/リソース名 :
- 外部メニュー連携/外部メニュー情報取得
- 外部メニュー連携/外部メニュー情報取得(管理)
メニュークライアントのシステム管理者に以下の情報を提供します。
Webサービス接続用エンドポイント 以下のフォーマットです。http://<HOST>:<PORT>/<CONTEXT_PATH>/services/MenuServiceWebサービス接続用ユーザコード 権限を与えられたユーザのユーザコードです。 Webサービス接続用ユーザパスワード 権限を与えられたユーザのパスワードです。
5.3.3.10.4.2. 外部メニュー連携サービス for intra-mart WebPlatform v7.2¶
外部メニュー連携サービス for WebPlatform v7.2 は、patch6 で提供されました。また、メニュークライアントで外部メニューの表示順序を設定するための機能は、patch7 で提供されました。外部メニュー連携を利用するためには、最新のパッチを利用するようにしてください。プロキシサーバ等を利用している場合、メニュー情報生成のため、ベースURLの設定が必要です。このモジュールでは、以下の設定を利用しています。設定がない場合は、追加するようにしてください。
設定ファイル : <%ServerManager のインストールパス% /conf/parameter.xml>
設定内容 :
<param> <param-name>im.web_server.url</param-name> <param-value>http://<アクセス可能なホスト名>:<PORT></param-value> </param>Webサービスモジュールを有効にするためには、ログイングループ管理者により、Webサービスアクセス設定を行う必要があります。Webサービス接続用のロールとそのロールを付与したユーザを新規に作成し、Webサービスアクセス設定により以下のWebサービスに実行許可を与えてください。 (既存のユーザに権限を与えることも可能です。)以下の2つのオペレーションに同じ権限を設定してください。
Webサービス名 : MenuService
オペレーション名 :
- getAvailableMenuTree
- getManagedMenuTree (patch7 以降で提供されます。)
メニュークライアントのシステム管理者に以下の情報を提供します。
Webサービス接続用エンドポイント 以下のフォーマットです。http://<HOST>:<PORT>/<CONTEXT_PATH>/services/MenuServiceWebサービス接続先ログイングループID メニュー情報を取得するログイングループのIDです。 Webサービス接続用ユーザコード 権限を与えられたユーザのユーザコードです。 Webサービス接続用ユーザパスワード 権限を与えられたユーザのパスワードです。 注意
intra-mart WebPlatform v7.2 patch6 では、外部メニューの表示順序を設定できません。intra-mart WebPlatform v7.2 patch6 を利用する場合は、メニュークライアントの設定ファイルに「editable」オプションを設定しないようにしてください。コラム
intra-mart Accel Platform のメニューから intra-mart WebPlatform のリンクをクリックした場合、intra-mart WebPlatform へのログインは自動的には行われません。自動的にログインが行われるようにするためには、別途 SSO 製品の対応が必要です。2014 Summer(Honoka) から、簡易的にSSOを実現するための機能(IM-HybridSSO)が追加されました。IM-HybridSSO を利用する場合は、「 iAP-iWP間SSO連携(IM-HybridSSO) 」を参照してください。IM-SecureSignOn for Accel Platform(以下 IM-SSO と記述します) は、intra-mart Accel Platform に対応した SSO 製品です。intra-mart WebPlatform の patch6 以降では、IM-SSO を利用した場合に、外部メニュー連携のメニューから自動的にログインが行われるようにするための機能が提供されています。 この機能を有効にするためには、IM-SSO 導入後、以下の設定を行ってください。<%ApplicationRuntime のインストールパス% /doc/imart/WEB-INF/web.xml> を修正します。( HTTPContextHandlingFilter の設定の直後に正しく設定を追加してください。設定箇所が間違っている場合、正常に動作しません。)<filter> <filter-name>HTTPContextHandlingFilter</filter-name> <filter-class>jp.co.intra_mart.common.aid.jsdk.javax.servlet.filter.HTTPContextHandlingFilter</filter-class> </filter> <!-- ↓↓↓ 以下を追加 --> <filter> <filter-name>AutoLoginFilter</filter-name> <filter-class>jp.co.intra_mart.foundation.security.filter.AutoLoginFilter</filter-class> </filter> <!-- ↑↑↑ ここまで --> : <filter-mapping> <filter-name>HTTPContextHandlingFilter</filter-name> <servlet-name>MenuServlet</servlet-name> </filter-mapping> <!-- ↓↓↓ 以下を追加 --> <filter-mapping> <filter-name>AutoLoginFilter</filter-name> <servlet-name>MenuServlet</servlet-name> </filter-mapping> <!-- ↑↑↑ ここまで -->以上の設定により、メニューURL(〜.menu)へのアクセス時に、VANADIS® Login Server で設定された Cookie 情報を参照して自動ログインを行います。Cookie 情報が設定されている場合、 intra-mart WebPlatform で一般ユーザのログイン・ログアウトは実行できません。必ず VANADIS® Login Server におけるログイン・ログアウトを実行してください。