intra-mart Accel Platform OAuth プログラミングガイド 第2版 2020-04-01

intra-mart Accel Platform 上の機能の提供方法( スクリプト開発モデル )

intra-mart Accel Platform 上のリソースをOAuth認証を通して提供する場合の作業手順は以下のとおりです。
  1. 提供するリソースのスコープ(アクセス範囲)を設定する。
  2. リソースを提供するURLを設定する。
  3. リソースを利用するアプリケーションを設定する。
  4. 提供するリソースを実装する。

ステップ1:提供するリソースのスコープ(アクセス範囲)を設定する。

空の<oauth-client-scope.xml>ファイルを作成して、以下を入力し保存します。
<?xml version="1.0" encoding="UTF-8"?>
<oauth-client-scopes-config
  xmlns="http://intra-mart.co.jp/system/oauth/provider/client/scope/config/oauth-client-scopes-config"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://intra-mart.co.jp/system/oauth/provider/client/scope/config/oauth-client-scopes-config oauth-client-scopes-config.xsd ">

  <scopes>
    <scope id="account">
      <default-subject>アカウント情報へのアクセス</default-subject>
      <localizations>
        <localize locale="ja">
          <subject>アカウント情報へのアクセス</subject>
          <text>ユーザアカウント情報へのアクセスを許可します。</text>
        </localize>
      </localizations>
    </scope>
  </scopes>

</oauth-client-scopes-config>

コラム

国際化情報(localize)は intra-mart Accel Platform で利用するロケール分、設定してください。

詳しい設定については 「 設定ファイルリファレンス 」 - 「 クライアントのアクセス範囲設定 」を参照してください。

作成した<oauth-client-scope.xml>ファイルを、「conf/oauth-client-scopes-config」直下に配置します。

スコープ(アクセス範囲)の設定内容はユーザがクライアントアプリケーションにアクセス許可を行う際に表示されます。
../../_images/authorize_11.png
次に、リソースを提供するURLを設定しスコープを関連付けます。

ステップ2:リソースを提供するURLを設定する。

空の<oauth-client-resource.xml>ファイルを作成して、以下を入力し保存します。
<?xml version="1.0" encoding="UTF-8"?>
<oauth-client-resources-config
  xmlns="http://intra-mart.co.jp/system/oauth/provider/client/resource/config/oauth-client-resources-config"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://intra-mart.co.jp/system/oauth/provider/client/resource/config/oauth-client-resources-config oauth-client-resources-config.xsd ">

  <client-resources>
    <client-resource id="user-account" path="/oauth/user/account" type="jssp" target="sample/user_account">
      <scope id="account" />
    </client-resource>
  </client-resources>

</oauth-client-resources-config>

コラム

設定したリソースに認可設定を行う場合は<client-resource>の子要素に<authz>タグを設定してください。

リソースに関連付けられたスコープがクライアントアプリケーションに許可されていない場合、リソースへのアクセスは拒否されます。

詳しい設定については 「 設定ファイルリファレンス 」 - 「 クライアントリソース設定 」を参照してください。

作成した<oauth-client-resource.xml>ファイルを、「conf/oauth-client-resources-config」直下に配置します。

次に、設定したリソースを参照可能なクライアントアプリケーションを設定します。

ステップ3:リソースを利用するアプリケーションを設定する。

空の<oauth-client-detail.xml>ファイルを作成して、以下を入力し保存します。
<?xml version="1.0" encoding="UTF-8"?>
<oauth-client-details-config
  xmlns="http://intra-mart.co.jp/system/oauth/provider/client/config/oauth-client-details-config"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://intra-mart.co.jp/system/oauth/provider/client/config/oauth-client-details-config oauth-client-details-config.xsd ">

  <client-details>
    <client-detail client-id="account-sample" client-secret="sample" authorized-grant-type="authorization_code">
      <default-name>サンプル・アプリケーション</default-name>
      <localizations>
        <localize locale="ja">
          <client-name>サンプル・アプリケーション</client-name>
          <description>アカウント情報を取得するサンプルアプリケーションです。</description>
        </localize>
      </localizations>
      <scopes>
        <scope id="account" />
      </scopes>
    </client-detail>
  </client-details>

</oauth-client-details-config>

コラム

国際化情報(localize)は intra-mart Accel Platform で利用するロケール分、設定してください。

クライアントのなりすましを防ぐため、 redirect-uri にクライアントアプリケーションのエンドポイントを設定することを推奨します。

詳しい設定については 「 設定ファイルリファレンス 」 - 「 クライアント詳細設定 」を参照してください。

作成した<oauth-client-detail.xml>ファイルを、「conf/oauth-client-details-config」直下に配置します。
../../_images/authorize_21.png

ステップ4:提供するリソースを実装する。

空の<user_account.js>ファイルを作成して、以下を入力し保存します。
function init(request) {
    var accountContext = Contexts.getAccountContext();
    var response = Web.getHTTPResponse();
    response.setContentType('application/json; charset=utf-8');
    response.sendMessageBodyString(ImJson.toJSONString(accountContext));
}
作成した<user_account.js>ファイルを、「jssp/src/sample」直下に配置します。

以上でリソースの提供が可能になります。
アクセストークンを取得した後に、「https://localhost:8080/imart/oauth/user/account?access_token=<access_token>」へリクエストを送信すると以下のようなレスポンスが返却されます。
{
   "applicationLicenses": [],
   "authenticated": true,
   "calendarId": "JPN_CAL",
   "dateTimeFormats": {
      "IM_DATETIME_FORMAT_DATE_STANDARD": "yyyy/MM/dd",
      "IM_DATETIME_FORMAT_DATE_SIMPLE": "MM/dd",
      "locale": "ja",
      "IM_DATETIME_FORMAT_DATE_INPUT": "yyyy/MM/dd",
      "IM_DATETIME_FORMAT_TIME_INPUT": "HH:mm",
      "format-set-id": "IM_DATETIME_FORMAT_SET_JA_BASE",
      "IM_DATETIME_FORMAT_TIME_STANDARD": "H:mm",
      "IM_DATETIME_FORMAT_TIME_TIMESTAMP": "H:mm:ss"
   },
   "encoding": "UTF-8",
   "firstDayOfWeek": 1,
   "homeUrl": "/home",
   "locale": "ja",
   "loginGroupId": "default",
   "loginTime": 1375753818835,
   "roleIds": [],
   "signature": "1xcbox8",
   "themeId": "im_theme_dropdown_blue",
   "timeZone": "Asia/Tokyo",
   "userCd": "aoyagi",
   "userType": 1
}