0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kong GatewayのPlugin Ordering機能を試す

Posted at

Kong GatewayのPoCをやっている時に、ある問題に遭いました。
PoCの要件は以下になる

  • Key-authプラグインでGateway全体を保護
  • Request-transformerプラグインで必要なAPI KeyをHeaderに付与し認証を突破

二つのプラグインを設定した後、API keyをrequestに追加されても認証されない

# key-auth is enabled
❯ http --header localhost:8000/demo | head -1
HTTP/1.1 401 Unauthorized

# Got 401 after creating request-transformer-adv plugin.
❯ curl -X POST http://localhost:8001/services/testsvc/plugins \
    --data "name=request-transformer-advanced"  \
    --data "config.add.headers=apikey:wenhandemo"
...
❯ http --header localhost:8000/demo | head -1
HTTP/1.1 401 Unauthorized

理由を調べたら、どうやらPluginのデフォルトの実行順番があるらしいです。

key-authのプライオリティは1250、request-transformer-advの801より高いです。よってkey-authが実行するときに、Headerに必要なAPI Keyがまだ付与されていない状態になります。

解決方法として、Kong Gateway 3.0に新しく追加された機能、plugin orderingでプラグインの実行順番を明示すればOKです。

よしでは実装してみよう。request-transformer-advancedのプラグインを設定するときに、key-authの前にすると宣言します。

❯ curl -X POST http://localhost:8001/services/testsvc/plugins \
    --data "name=request-transformer-advanced"  \
    --data "config.add.headers=apikey:wenhandemo" \
    --data "ordering.before.access=key-auth"
...
❯ http --header localhost:8000/demo | head -1
HTTP/1.1 200 OK

ジャジャン♪

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?