イベント認証拡張機能を使用したカスタムポリシーの開発

イベント認証拡張機能を使用して、Mule イベントの認証データでクライアント ID プロパティを伝播できます。イベント認証拡張機能を使用してカスタムポリシーを開発および実装するには、次の手順を理解する必要があります。

ユースケース

ProTeams は、ユーザーがチームやスポーツ活動を管理できるスポーツ管理アプリケーションです。ProTeams ユーザーは、他のチームとのチャットへの参加、エキシビションや親善試合の開催、トーナメントの日程の確認などのアクションをチームを代表して実行できます。

各チームの Anypoint Platform にはクライアントアプリケーションがあり、クライアント ID 適用ポリシーを使用してサイトへの要求を確認します。プレーヤーにはチーム管理タスクを非表示にするために、マネージャー用とプレーヤー用に別々の ID が作成されています。

チームオーナーとマネージャーは、必要に応じて特定のタスクでプレーヤーの代理を務めることができます。プレーヤーは、練習試合のセットアップやチームメンバーとのチャットメッセージの開始など、チームのタスクを実行することもできます。

すべてのユーザー ID はチームのクライアント ID にマップされているため、任意のユーザー ID で行われるすべてのトランザクションに伝播されます。クライアント ID が Mule イベントの認証データに挿入されると、Mule はクライアントアプリケーションの分析データを生成します。ProTeams はこのアプリケーション分析を使用して、アプリケーション内のチームトランザクションを確認します。

このプレーヤー ID とチームクライアント ID のマッピングを作成するには、チームオーナーが要求の ​userId​ というヘッダーからユーザー ID を取得する新しいカスタムポリシーを開発する必要があります。ユーザー ID は、クエリパラメーターを使用して取得することもできます。その後、ポリシーでマッピングを実行します。

ProTeams はこの例を出発点として使用し、独自のマッピングロジックを追加します。

プロジェクトのセットアップ

ProTeams は、最初に​カスタムポリシーアーキタイププロジェクト​を作成することで、カスタムポリシーを開発します。次に、アーキタイプを実行し、この例に示されている値を置き換えます。

次に、ディレクトリをワークスペースにコピーし、​pom.xml​ ファイル内の ​groupId​ と ​artifactId​ の値を独自の値と一致させます。

  • <groupId>_YOUR_GROUP_ID_</groupId>​ を ProTeams 組織 ID (この場合は ​Group2234​) に置き換える。

  • <artifactId>​set-authentication-policy​<cd/artifactId>​ を必要なアーティファクト ID (この場合は ​map-to-authentication-policy​) に置き換える。

さらに必要に応じて、バージョンや連動関係などの他の要素を追加または変更できます。

YAML 設定ファイルの作成

ProTeams はプロジェクトをセットアップした後に、API Manager で設定するポリシーの入力パラメーターを定義することから始めます。

次のコードスニペットは、ポリシー UI の YAML ファイルの例を示しています。

id: Map To Authentication
name: Map To Authentication
description: Maps input user identifier to the associated Client ID, and propagates it via the authentication data
category: Custom
type: custom
resourceLevelSupported: true
encryptionSupported: false
standalone: true
requiredCharacteristics: []
providedCharacteristics: []
configuration:
  - propertyName: userIdExpression
    name: User Identifier Expression
    description: Mule Expression used to extract the user identifier value from API requests
    type: expression
    defaultValue: "#[attributes.headers['fks_user_id']]"
    optional: false
    sensitive: false
    allowMultiple: false

この例では、YAML ファイルにはどの要求属性からユーザー ID を抽出するかを決定する 1 つの設定プロパティのみが含まれます。この設定プロパティは DataWeave 式項目です。

name​ および ​description​ パラメーターは、それぞれプロパティの表示タイトルと説明です。​type​ パラメーターは項目値が DataWeave 式である必要があることを示し、​defaultValue​ パラメーターはポリシーを設定するときに API Manager で推奨される項目値を指定します。​optional​ パラメーターは ​false​ に設定され、この項目が必須であることを示します。

YAML ファイルのセットアップ方法についての詳細は、​「YAML 設定ファイル」​を参照してください。

ポリシーの実装

ProTeams はポリシーの入力パラメーターを定義した後に、次の手順でポリシーの実装を開始できます。

イベント認証拡張機能は、Mule EE Nexus リポジトリにあります。この例の POM ファイルはリポジトリへの参照をすでに保持しており、​releases-ee​ というログイン情報の別名で設定されています。必要に応じて、この別名を変更できます。

settings.xml ファイルへのサーバーの追加

リポジトリにアクセスするため、ProTeams は Maven 設定ファイルに対応するサーバーを追加する必要があります。

<servers>
      <server>
         <id>releases-ee</id>
         <username>your_username</username>
         <password>your_password</password>
       </server>
</servers>

pom.xml ファイルへの連動関係の追加

Maven ​settings.xml​ ファイルに新しいサーバーを追加したら、ポリシーで特定のアクションを実行するために、ProTeams はイベント認証や HTTP ポリシートランスフォーム拡張機能などの連動関係を ​pom.xml​ ファイルに追加します。

    <dependencies>
        <dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId>mule-event-authentication-extension</artifactId>
            <version>${authenticationExtensionVersion}</version>
            <classifier>mule-plugin</classifier>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId>mule-http-policy-transform-extension</artifactId>
            <version>${httpPolicyTransformVersion}</version>
            <classifier>mule-plugin</classifier>
            <exclusions>
                <exclusion>
                    <groupId>org.mule.connectors</groupId>
                    <artifactId>mule-http-connector</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

Java で独自のコネクタを作成する方法についての詳細は、​「Java 用 Mule SDK 入門」​を参照してください。

template.xml ファイルへの条件の追加

ProTeams は機能ロジックを ​template.xml file​ に追加して、ProTeams の ID マッピングなどのポリシーでタスクを実行できるようにする必要があります。

ProTeams の値マッピングは Mule 拡張では使用できないため、独自のカスタムモジュールを作成して追加する必要があります。

Exchange へのアップロード

カスタムポリシーを Exchange にアップロードするため、ProTeams は ​pom.xml​ ファイルが組織用に適切に設定されていることを確認する必要があります。

タスクの前提条件

ポリシーを Exchange にアップロードする前に、ProTeams は次のことを確認する必要があります。

  • 一意の ID、および組織の Exchange ログイン情報のユーザー名とパスワードを使用して、Maven ​settings.xml​ ファイルに新しいサーバーが作成されている。

  • URL が自分の地域と一致する。

    警告:​ 同様のアクションを実行して独自のカスタムポリシーを作成する場合、テンプレートは米国地域に対応する URL を使用していることに注意してください。アカウントがこの地域に属していない場合は、この値を変更します。

  • リポジトリ ID が Maven 設定の ID と一致する。

    name タグを使用して、そのリポジトリの別名を定義できます。

ポリシーを Exchange にアップロードする手順は、次のとおりです。

  1. ポリシー ​pom.xml​ ファイルに移動して distributionManagement` セクションを​見つけます​。

    <distributionManagement>
        <repository>
            <id>your_server_id</id>
            <name>My Repository</name>
            <url>${exchange.url}</url>
            <layout>default</layout>
        </repository>
    </distributionManagement>
  2. サーバー設定を確認したら、次のコマンドを使用して Exchange へのポリシーのアップロードを開始します。

> mvn deploy

これで、ProTeams が開発したカスタムポリシーが Exchange にアップロードされました。

ポリシーの適用

次に、ProTeams はデフォルトポリシーを適用するのと同じ方法でカスタムポリシーを適用します。API Manager に移動すると、使用可能な新しいポリシーが表示され、設定して使用できます。

完全なカスタムポリシーの例を表示するには、Github リポジトリ 「Custom Policies Examples (カスタムポリシーの例)」​を参照してください。