[BIG-IP APM] JWT形式のAPIキーによるアクセス制御 Part2

BIG-IP APMはOAuth 2.0 Authorization Frameworkにおける役割の中で
Client、Resource Server、Authorization Serverとして動作させることができます。

本投稿では、Authorization Server(以下ASサーバ)とResource Server(以下RSサーバ)にAPMを利用するケースで
その設定などをご紹介します。

前回の記事ではAPMでASサーバを構成し、JWT形式のアクセストークンの取得が可能なことを確認しました。
今回は、作成したASサーバと連携するRSサーバを構成する設定をご紹介します。

RSサーバ設定

1. Provider設定
Access > Federation > OAuth Client / Resource Server > Providerから設定します。

証明書は適切なものを利用します。
本例ではOpenSSLで作成した自己認証局が署名した自己証明書を使用しています。
また、各種URIはアドレスをASサーバのものに変更します。
特にASサーバで変更していなければURIのパスを変更する必要はありません。

Discoverを選択後問題なければIssuerやKeyなどが表示されます。

2.JWT Providerを設定
Access > Federation > JSON Web Token > Provider Listから設定します。
作成したProviderを選択してAddします。

ここまででRSサーバとしての設定は完了です。
次に、VPEを作成していきます。今回はAPI Protection機能を活用して
VPE及びポリシーを作成します。

3.API Protection Profileの作成
Access > API Protection > Profileから設定します。
任意の名前を入力し、AuthorizationにOAuth2.0を選択し追加します。
また、OpenAPIファイルを投入することができます。

PathsのタブからURIやサーバを作成します。
前項でOpenAPIファイルを投入していない場合はここから手動でパスを作成することができます。

・URIを追加する例

・サーバ設定

Access ControlタブのPer Request PolicyでEditを選択するとVPEを編集できます。

これまでの設定で上記のような構成が作成されます。
SubroutineポリシーのOAuth Scopeを編集しToken Validation ModeをInternal
JWT Provider Listを作成したものに変更します。

4. Virtual Serverを設定
Local Traffic > Virtual Servers > Virtual Server List から
RSサーバとして受けるVSを作成し、作成したAPI Protection Profileを適用します。

以上で設定は完了です。

テスト
前回PostmanでASサーバからアクセストークンを取得できましたのでこちらを利用してアクセスしていきます。
トークンがついていないアクセスや有効期限切れのものも含めてテストします。

・ASサーバからアクセストークンを取得してアクセス
200 OK のステータスとともにアクセスできることを確認できました。

・アクセストークンをつけずにアクセス
403 Forbiddenのエラーでアクセスできません。

・有効期限の切れたアクセストークンをつけてアクセス
401 Unauthrizedのエラーでアクセスできません。 

 

まとめ
ここまででAPMを利用したOAuth AS ・RSの設定は完了です。
これらの構成をご活用いただき、お客様のAPI環境にご利用いただけるかと存じます。

次回はJWTに含まれるClaimの値を利用してレート制限をかける方法についてご紹介します。

 

Published Feb 27, 2023
Version 1.0
No CommentsBe the first to comment