Muleカスタムポリシーの開発で得られたナレッジ

Stay hungry. Stay foolish. Your time is limited, so don't waste it living someone else's life.

Muleカスタムポリシーの開発で得られたナレッジ

はじめに

 Muleカスタムポリシーの開発で得られたナレッジをご紹介する。

目次

作成手順は以下の通り。

  1. カスタムポリシーでできること
  2. 開発で得られたナレッジ
  3. Mavenのプロキシ設定
  4. アクセストークンを利用したMule環境へのログイン
  5. APIを利用したカスタムポリシーの検索方法と削除方法

ナレッジの詳細

1.カスタムポリシーでできること

標準ポリシーでは提供していない独自のビジネスロジックを導入するための拡張機能である。
例えば以下のことができる。

① クライアントやバックエンドシステムへの通信の前後にログ出力する。
② クライアントからリクエストを受信したときに許可されたパスなのかチェックする。
③ポリシー設定画面に各設定用の入力項目を用意する。
④リクエストやレスポンス情報を追加・変更する。

2.開発で得られたナレッジ

No.工程ナレッジ説明
1 プロジェクトの作成 ・ プロキシ経由で外部サイトへのアクセスが必要な環境は、『Maven > conf > settings.xml』にプロキシ情報を設定する。
・ HTTP ポリシートランスフォーム拡張機能を利用する場合は、Muleのエンタープライズリポジトリのログイン情報を設定する。
・ SSOが設定されている組織にカスタムポリシーをデプロイする場合は、アクセストークンを利用する。
・ アクセストークンの取得方法は、クライアント認証、画面のセッションID、SSOのSAMLレスポンスがある。
2 プロジェクト設定ファイルの編集 ・ Exchangeのポリシーの表示名と説明は、プロジェクトのpom.xmlの『name』と『description』に設定する。
・ API Managerのポリシーの表示名とカテゴリは、プロジェクトのyamlファイルの『name』、『category』に設定する。
・カスタムポリシーを各ビジネスグループのAPIに適応したい場合、ビジネスグループ毎にデプロイする。
・ API Managerのポリシーの表示名やカテゴリは、初回登録以降変更できない。
・ ポリシーの表示名とカテゴリを変更する場合は、ポリシーを物理削除する必要がある。
3 フローの開発 ・ Validationエラーはエラー制御に関係なくログ出力されるため、出力したくない場合はエラーが発生しない方法で実装する。
・ カスタムポリシーのデバッグはCloudHub上でしか実行できないため、都度修正にはデプロイ作業が必要で開発効率が悪い。対策は可能な限りMuleアプリケーションで動作を確認してからポリシーに設定する。
・ カスタムポリシーの挙動がおかしい場合、Exchange APIを利用して物理削除する。
4 Exchangeへデプロイ ・Exchangeの画面からカスタムポリシーを削除しても、API Managerのポリシー選択画面に表示される場合は、Exchange APIから物理削除する。

1-1.Mavenのプロキシ設定

 開発環境がプロキシ経由で外部サイトにアクセスする場合、Mavenのsettings.xmlを修正する。

<proxies>
    <proxy>
      <id>proxy</id>
      <active>true</active> // 有効にできるのは一つのみ
      <protocol>http</protocol>
      <host>proxy.host.net</host>
      <port>80</port>
    </proxy>
  </proxies>

1-2.アクセストークンを利用する設定

 SSOを設定しているAnypoint Platformにアクセスする場合、アクセストークンを利用する。

  • ID:『exchange-server』は、デプロイする先のログイン情報
  • ID:『MuleRepository』は、HTTPトランスフォーム拡張機能を利用する場合に、MuleのEnterprise Repositoryのログイン情報を設定する。
 <servers>
    <server>
        <id>exchange-server</id>
        <username>~~~Token~~~</username> // SSOが設定されている組織の場合、トークンを利用する
        <password>{Access Token}</password>
    </server>
    <server>
        <id>MuleRepository</id> // MuleのEnterprise Repositoryのログイン情報
        <username>{Enterprise Repository UserID}</username>
        <password>{Password}</password>
    </server>
  </servers>
アクセストークンの取得方法

 アクセストークンは、Muleの接続アプリケーションを使ったクライアント認証や、SAMLレスポンス。そして、Chromeの開発者コンソールから取得することができる。

4-1.APIを利用したカスタムポリシーの物理削除

 カスタムポリシーの設定ファイルを変更した後、設定が反映されない場合や挙動がおかしい場合は、カスタムポリシーを一度物理削除してデプロイすると解決する。

 カスタムポリシーの ビジネスグループの組織ID とアセットIDを検索する。

URL: GET https://anypoint.mulesoft.com/exchange/api/v2/assets/search?search={Custom PolicyのAssetIdなど}
HEADERS:
  Authorization: Bearer {Access_Token}

 カスタムポリシーを、検索したビジネスグループの組織IDとアセットIDで削除する。

URL: DELETE https://anypoint.mulesoft.com/exchange/api/v2/assets/{Bussiness_Groupの組織ID}/{Custom_Policy_AssetId}
HEADERS:
  Authorization: Bearer {Access_Token}
  X-Delete-Type: hard-delete

まとめ

 いかがでしょうか?カスタムポリシーの開発を身近に感じれるようになりましたか?
 ぜひ、活用してみてください。

参考資料

公式ヘルプ:カスタム応答ポリシーの開発

公式ヘルプ:カスタムポリシー開発リファレンス