intra-mart Accel Platform 移行ガイド 第18版 2020-12-01

Webサービス

認可を設定してください。

注意

認可の設定を行わなかった場合、アクセス権チェックが行われず、すべてのユーザがアクセス可能です。

Webサービスに対し、認可機能を適用するには、以下の設定が必要です。

  1. services.xmlに認可リソースURI設定を追加する
  2. 認可リソースを登録し認可設定を行う

コラム

認可の詳細については、「認可仕様書 」を参照してください。

services.xmlに認可リソースURI設定を追加する

認可リソースURIを決める

WebサービスのURIは、以下の形式を推奨しています。

  • サービスに対して設定する場合

    service://アプリケーションID/web_service/サービス名

  • オペレーションに対して設定する場合

    service://アプリケーションID/web_service/サービス名/オペレーション名

コラム

認可リソースURIを設定していないオペレーションに対しては、サービスの認可設定が適用されます。

WebサービスのURIの例

  • アプリケーション foo のWebサービス「BarService」に認可を設定する場合

    service://foo/web_service/BarService

  • オペレーション「bazOperation」に認可を設定する場合

    service://foo/web_service/BarService/bazOperation

services.xmlに、URI設定を追加する

<<CONTEXT_PATH>/WEB-INF/services/%サービス名%/META-INF/services.xml>にauthz-uriパラメータを追加します。 サービス<service>またはオペレーション<operation>に対して設定できます。

  • parameter-name -> authz-uri
  • parameter-value -> リソースのURI

コラム

サービス、オペレーションの両方とも authz-uri が未設定の場合、そのオペレーションの認可は「許可」です。

コラム

前提として、axis2.xmlの設定 <enableAuthentication>、<enableAuthorization>はどちらもtrue(認証利用、認可利用)とします。
この設定で、im_ws_authモジュールと、authz-uriの設定の組合せによる動作は以下のとおりです。
im_ws_auth authz-uri 認証 認可 備考
指定 指定 選択する 選択する 認証・認可を行う場合は、im_ws_authとauthz-uriを必ず指定してください。
指定 なし 選択する 選択しない(許可) 認証だけを行う場合は、im_ws_authだけを指定してください。
なし
選択しない 選択しない(許可) 認証・認可を行わない場合は、im_ws_authを指定しないでください。

注意

im_ws_authが未指定の場合、authz-uriの指定があっても、認可は行われません。

サービスに対してURIを設定する場合のservices.xmlの記述例

認可用のリソースURIが「service://foo/web_service/BarService」の場合、以下のようにURIを指定します。(5行目)

<service name="BarService">
    <Description>Sample Service</Description>

    <parameter name="ServiceClass">sample.web_service.provider.BarService</parameter>
    <parameter name="authz-uri">service://foo/web_service/BarService</parameter>

    <module ref="im_ws_auth"/>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
</service>

上記の設定でBarServiceは「service://foo/web_service/BarService」という認可リソースが有効です。

オペレーションに対してURIを設定する場合のservices.xmlの記述例

BarService内のオペレーション毎に認可を行いたい場合、以下のようにオペレーション毎にURIを指定します。(13~15行目)

<service name="BarService">
    <Description>Sample Service</Description>

    <parameter name="ServiceClass">sample.web_service.provider.BarService</parameter>
    <parameter name="authz-uri">service://foo/web_service/BarService</parameter>

    <module ref="im_ws_auth"/>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>

    <operation name="bazOperation">
        <parameter name="authz-uri">service://foo/web_service/BarService/bazOperation</parameter>
    </operation>
</service>
上記の設定で「BarService#bazOperation」は「service://foo/web_service/BarService/bazOperation」という認可リソースが有効です。
「BarService#bazOperation」以外のオペレーションには「service://foo/web_service/BarService」という認可リソースが有効です。

認可リソースを登録し認可設定を行う

認可リソースをインポートする

認可リソース登録用インポートファイルを作成し、認可リソースのインポートジョブでインポートしてください。
認可機能およびファイル内容については、「認可仕様書 」を参照してください。
  • リソースの構成例

    Webサービス
      └ アプリケーション名
         └ 機能名
           └  サービス名(またはオペレーション名)
    

コラム

リソース名に特に制限はありませんが、重複すると認可設定画面で区別できなくなりますので注意してください。

  • 認可リソースグループ インポートファイルの例

    <?xml version="1.0" encoding="UTF-8"?>
    <root xmlns="http://www.intra-mart.jp/authz/imex/resource-group">
        <authz-resource-group id="foo_web-services">
            <display-name>
                <name locale="ja">fooApplication</name>
                <name locale="en">fooApplication</name>
                <name locale="zh_CN">fooApplication</name>
            </display-name>
            <parent-group id="web-services">
            </parent-group>
        </authz-resource-group>
        <authz-resource-group id="foo_web-services_bar">
            <display-name>
                <name locale="ja">barService</name>
                <name locale="en">barService</name>
                <name locale="zh_CN">barService</name>
            </display-name>
            <parent-group id="foo_web-services">
            </parent-group>
        </authz-resource-group>
    </root>
    
  • 認可リソース インポートファイルの例

    <?xml version="1.0" encoding="UTF-8"?>
    <root xmlns="http://www.intra-mart.jp/authz/imex/resource">
        <authz-resource id="foo_bar_baz" uri="service://foo/web_service/BarService/bazOperation">
            <display-name>
                <name locale="ja">bazOperation</name>
                <name locale="en">bazOperation</name>
                <name locale="zh_CN">bazOperation</name>
            </display-name>
            <parent-group id="foo_web-services_bar">
            </parent-group>
        </authz-resource>
    </root>
    

認可設定を行う

「認可設定」画面より、リソースの種別で「Webサービス」を選択し、登録したリソースに対し、権限設定を行ってください。

補足事項

intra-mart WebPlatform 7.2の資材移行

intra-mart WebPlatform 7.2上で動作していたWebサービスは、削除されたAPIを使っていなければ、intra-mart Accel Platform 上でも再コンパイルすることなくそのまま動かすことが可能です。

コラム

ログイングループとテナントの仕様の違いにより、パラメータ中のログイングループIDは無視されます。

クライアントサイド

intra-mart WebPlatform 7.2 と intra-mart Accel Platform でサーバのIPやポート、コンテキストパスが同じなら、設定変更なしで動きます。
アドレスに変更がある場合は、修正を行ってください。

Webサービス開発向けツール

intra-martでは、Webサービス開発向けの以下のツールを提供しています。

  • aarファイル作成ツール
  • スタブクラス作成ツール

注意

  • intra-mart Accel Platform では Ant はインストールされません。

    • 必要に応じてインストールしてください。
  • ツールはwarには含まれません。

    • インストールメディアよりコピーしてください。

intra-mart WebPlatform 7.2の手順からの主な変更点は以下の通りです。

aarファイル作成ツール

  1. AarGen.bat(AarGen.sh) に、変数の設定を行ってください

    • 変数「IMART_DIR」に、warを展開したディレクトリを設定

    • 変数「ANT_HOME」に、Antツールのインストールディレクトリを設定

      • AarGen.batの例)

        set IMART_DIR=C:/resin/webapps/imart
        set ANT_HOME=C:/apache-ant
        
  2. AarGen.xml に、認可リソースURI設定を行ってください

    • サービスに対しては、serviceAuthzUri にURIを設定

    • オペレーションに対しては、オペレーション名とURIのCSVファイルを用意し、opeAuthzUriFile にファイル名を設定

      • 設定例)

        serviceAuthzUri = "service://sample/web_service/member_info"
        opeAuthzUriFile = "opeAuthzUri.csv"
        
      • opeAuthzUri.csvの例

        add,service://sample/web_service/member_info/add
        find,service://sample/web_service/member_info/find
        findAll,service://sample/web_service/member_info/findAll
        

スタブクラス作成ツール

  1. StubGen.bat(StubGen.sh) に、変数の設定を行ってください

    • 変数「IMART_DIR」に、warを展開してできたディレクトリを設定

    • 変数「ANT_HOME」に、Antツールのインストールディレクトリを設定

      • StubGen.batの例)

        set IMART_DIR=C:/resin/webapps/imart
        set ANT_HOME=C:/apache-ant