メインコンテンツまでスキップ

Plugin の概要

Plugin は API Gateway を拡張し、request がバックエンドに届く前に、認証、セキュリティの追加、トラフィックの制御、request の変換を行います。各 plugin は 1 つの API Gateway に属し、選択した範囲(Scope)に適用されます。

サポートされている plugin​

Plugin種類用途ガイド
JWT AuthAuthenticationConsumer の JSON Web Token で request を認証します。JWT Auth plugin
OpenID ConnectAuthenticationOAuth 2.0 / OIDC を使い、外部の Identity Provider(Keycloak、Auth0、Google、Okta など)を通じて認証します。OpenID Connect plugin
CorsSecurityCORS ヘッダーを追加して、別ドメインの Web ページがブラウザーから API を呼び出せるようにします。CORS plugin
Rate LimitingTraffic Control一定の時間枠内の request 数を制限します。Rate Limiting plugin
Proxy RewriteTransformationrequest がバックエンドに届く前に、host、path、method、ヘッダーを書き換えます。Proxy Rewrite plugin

手順については、Plugin の追加と各 plugin のページを参照してください。

Scope​

plugin を作成するときに、Scope セクションで適用先を選択します。

Scope適用先一覧の Applied to 列
GlobalAPI Gateway のすべての Service、Route、Consumer。Global
Scoped+ Add Route / + Add Service で選択した Route / Service のみ。Route、Service、または Route + Service

1 つの plugin を複数の Route / Service に紐付けられます。Route または Service の詳細画面から plugin を追加する場合は、既存の plugin を再利用する(Select existing plugin)か、新しい plugin を作成する(Create new plugin)かを選びます。

直接の plugin と継承された plugin​

Route / Service の詳細画面の Plugins タブには、2 つのサブタブがあります。

サブタブ意味
Explicit Plugin表示中の Route / Service に直接紐付けられた plugin です。このサブタブで plugin を追加します。
Implicit PluginRoute / Service が他から受け取る plugin で、読み取り専用です: Global の plugin、または Route が Via Service で使う Service に紐付けられた plugin。

例: Rate Limiting plugin が order-service Service に紐付けられているとします。Via Service で order-service を使うすべての Route では、この plugin が Implicit Plugin サブタブに表示されるため、Route ごとに紐付け直す必要はありません。

Plugin と他のモジュール​

モジュールplugin との関係
RouteScope の対象です。Plugins タブに Explicit Plugin / Implicit Plugin があり、そこで plugin を追加できます。
ServiceScope の対象です。Service に紐付けた plugin は、Via Service を使う Route に継承されます。
Consumer認証 plugin は Consumer の Credential で request を識別します。Global の Scope は Consumer も対象にします。
Upstreamplugin を Upstream に直接紐付けることはできません。Upstream に送られる request に plugin を適用するには、その Upstream を使う Route または Service に紐付けます。

よく使う plugin の組み合わせ​

一部の plugin は、他のコンポーネントと組み合わせて初めて機能します。

目的必要なもの
JWT で request を認証するRoute / Service の JWT Auth plugin + JWT Credential を持つ Consumer。
顧客ごとに request を制限するlimit_by を consumer に設定した Rate Limiting plugin + 同じ Route / Service の認証 plugin(JWT Auth、OpenID Connect)。
別ドメインのフロントエンドがトークン付きで API を呼び出すCors plugin + JWT Auth(JWT Auth の run_on_preflight は false のまま)。
Consumer 名をバックエンドに渡す$consumer_name 変数を使う Proxy Rewrite plugin + 先に実行される認証 plugin。

次のステップ​

に最終更新