本記事はこちらのブログを参考にしています。
翻訳にはアリババクラウドのModelStudio(Qwen)を使用しております。
Alibaba Cloud API GatewayとJWTトークン認証の統合
著者: Radityo Pradana, Alibaba Cloud Indonesia ソリューションアーキテクト
今日のデジタル環境において、APIセキュリティはこれまで以上に重要です。組織にとって重要な課題は、APIサービスへのアクセスを適切なユーザーに制限し、不正アクセスを防止することです。API認証で最も広く採用されている方法の一つがJSON Web Tokens (JWT)の使用です。このブログでは、Alibaba CloudのAPI GatewayとJWTトークン認証を統合して、APIを保護し効果的にアクセス制御を行う方法について探ります。
JWTとは?
JSON Web Token (JWT) は、JSONオブジェクトとして情報を取り扱うためのオープン標準です。現代のアプリケーションでユーザ認証や認可に広く使用されています。JWTは通常、以下の3つの部分から構成されます:
- ヘッダー:署名アルゴリズムなどのメタデータを含みます。
- ペイロード:送信される情報を含むクレーム(例:ユーザID、ロール、権限)を含みます。
- 署名:トークンの整合性を確保し、その真正性を検証します。
JWTは秘密鍵または公開/秘密鍵ペアを使用して署名され、トークンの内容が改ざんされていないことを保証します。
API GatewayでJWTを使用する理由
API GatewayでJWTトークンを使用することで以下のような利点があります:
- ステートレス認証:JWTはステートレスであり、トークンが発行された後はサーバー側でセッション情報を保持する必要がありません。これによりサーバー側のオーバーヘッドが軽減されます。
- スケーラビリティ:JWTトークンは自己完結型であり、サーバー側での保存が必要ないため、スケーラブルなマイクロサービスアーキテクチャに理想的です。
- セキュリティ:JWTを使用すると、ロール、権限、その他のクレームをトークンに直接埋め込むことで、各APIリクエストが適切に認証されることを簡単に管理できます。
Alibaba Cloud API GatewayでJWTを使用する方法
Alibaba Cloud API GatewayとJWTを統合するには以下の手順があります:
-
JWKペアの生成
JWKペアを作成する方法はいくつかありますが、この例ではオンラインJWKジェネレータを使用します。この操作で秘密鍵と公開鍵を取得します。
 -
JWKペアの秘密鍵を使用してトークンを発行
JWKペアが生成されたら、公開鍵と秘密鍵を使用してトークンを発行します。トークンを生成する方法はいくつかありますが、この例ではオンライントークンジェネレータを使用します。エンコードされたトークンを取得し、APIに統合します。
-
JWT認証プラグインの設定
- API Gatewayコンソールにログインします。
- 左側のナビゲーションパネルで「Manage APIs > Plug-ins」を選択します。
- 「Plug-ins」ページで右上にある「Create Plug-in」をクリックします。
- 「Create Plug-in」ページで、「Plug-in Type」を「JWT Authorization」に設定します。以下はJWT認証プラグインの設定例です。

-
JWT認証プラグインをAPIにバインド
「Plug-in List」ページで作成したJWT認証プラグインを見つけ、「Actions」列の「Bind API」をクリックします。「Bind API」ダイアログボックスで、APIグループと環境を選択し、APIを「Selected APIs」パネルに追加し、「OK」をクリックします。
 -
APIのテスト
JWTプラグインがバインドされたAPIは、リクエストヘッダーにエンコードされたトークンを含める必要があります。トークンを含めてAPIを呼び出すサンプルは以下の通りです:

API GatewayとJWTに関するより詳細な情報とドキュメンテーションは以下のリンクをご覧ください:
https://www.alibabacloud.com/help/en/api-gateway/traditional-api-gateway/user-guide/jwt-based-authentication