intra-mart Accel Platform ポートレット プログラミングガイド 第11版 2019-08-01

10. ポートレットのアクセス制御

10.1. 概要

ポートレットがブラウザ等からURL指定で直接アクセスされた場合、ポートレットの呼び出しはポートレットコンテナを介さないため
ポータルに設定されたアクセス権限による制御は実行されません。
そのため、本来ポートレットを参照できないユーザが直接アクセスを行った場合に、意図せずポートレットが実行されてしまいます。

意図しない実行を抑止するためには直接アクセスを制御(禁止/指定されたユーザにのみ許可)する必要があります。
本稿ではポートレットに対する直接アクセスに関して、認可機構を利用して直接アクセスを制御する方法を説明します。

10.2. アクセス制御の方法

ポートレットモジュールのURLを認可リソースとして登録し、登録した認可リソースに対して認可ポリシーの設定を行います。
直接アクセスを制御するために認可設定が必要な開発モデルは以下の通りです。
  • JavaEE 開発モデル
  • JSP/サーブレット
  • SA Struts

10.3. 認可設定の方法

JavaEE 開発モデルを例に、直接アクセスを制御する方法を説明します。

  1. ポートレットモジュール用に認可リソースURIを割り当てます。

    例えば、以下のような認可リソースURIを決定します。

    service://portal/sample-direct-access

  2. ポートレットモジュールのルーティング設定(routing-service-config)を行います。

    ポートレットモジュール用の認可リソースURIをルーティング設定に割り当てます。

    <?xml version="1.0" encoding="UTF-8"?>
    <routing-service-config
        xmlns="http://www.intra-mart.jp/router/routing-service-config"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.intra-mart.jp/router/routing-service-config routing-service-config.xsd ">
    
            <!-- ポートレットモジュールのURL -->
            <service-mapping path="javaee_sample-test_portlet.service"
                application="portal" service="test_portlet">
                <authz uri="service://portal/sample-direct-access" action="execute" />
            </service-mapping>
    
    </routing-service-config>
    
  3. ポートレットモジュール用の認可リソースを登録します。
    認可設定については、「スクリプト開発モデル プログラミングガイド」 - 「認可」 - 「画面へアクセスするための認可設定方法」を参照してください。
    スクリプト開発モデルの認可設定方法が記載されていますが、手順は同じです。
  4. ポートレットモジュール用の認可リソースに適切な権限を設定してください。

    • 直接アクセスを禁止したい場合は全ての対象者条件に対して「禁止」または「未設定(禁止)」となるように権限を設定してください。
    • ポートレットモジュールの画面と通常の画面を共有して使用する場合は、通常の画面として利用するユーザのみが直接アクセスできる必要があります。
      直接アクセスさせたいユーザの対象条件に対して「許可」となるように権限を設定してください。

JSP/サーブレット、SA Strutsに関してもそれぞれ同様の手順で設定することで、直接アクセスを制御する事ができます。