すべてのプロダクト
Search
ドキュメントセンター

API Gateway:basic-auth

最終更新日:Jan 09, 2025

basic-authプラグインは、HTTP基本認証仕様に基づく認証に使用されます。 このトピックでは、basic-authプラグインを設定する方法について説明します。

プラグイン型

認証と承認のためのプラグイン。

フィールド

権限付与の設定

項目

データ型

必須 / 任意

デフォルト値

説明

消費者

オブジェクトの配列

対象

-

サービスの呼び出し元。 このフィールドは、リクエストを認証するために使用されます。

global_auth

文字列の配列

いいえ (インスタンスレベルの設定にのみ必要)

-

このフィールドは、インスタンスレベルでのみ設定できます。 このフィールドがtrueに設定されている場合、認証メカニズムはグローバルに有効になります。 このフィールドがfalseに設定されている場合、認証メカニズムは設定されたドメイン名とルートに対してのみ有効になります。 このフィールドが設定されていない場合、認証メカニズムはドメイン名とルートが設定されていない場合にのみグローバルに有効になります。 これは、古いユーザの使用習慣を考慮したものである。

次の表に、consumersのフィールドを示します。

項目

データ型

必須 / 任意

デフォルト値

説明

資格情報

String

対象

-

コンシューマーのアクセス資格情報。

name

String

対象

-

コンシューマーの名前。

(オプション) 許可設定

項目

データ型

必須 / 任意

デフォルト値

説明

許可する

文字列の配列

いいえ (非インスタンスレベルの設定には必須)

-

このフィールドは、ルートやドメイン名などの細かい粒度でのみ設定できます。 一致する条件を満たすリクエストについては、アクセスを許可されるコンシューマーを設定できます。 これにより、詳細な権限制御が実装されます。

重要
  • 許可設定と認証設定はルール内で共存できません。

  • 認証されたリクエストの場合、X-Mse-Consumerフィールドがリクエストヘッダーに追加され、呼び出し元の名前が識別されます。

ルートの認証と承認のグローバル設定

このセクションでは、ゲートウェイの特定のルートまたはドメインに対して基本的な認証と承認を有効にする方法の例を示します。

説明
  • 資格情報のユーザー名とパスワードはコロン (:) で区切ります。

  • 資格情報の設定項目は一意である必要があります。

インスタンスレベルで次のプラグイン設定を適用します。

global_auth: false
consumers:
- credential: 'admin:123456'
  name: consumer1
- credential: 'guest:abc'
  name: consumer2

route-aおよびroute-bのルートに次のプラグイン設定を適用します。

allow:
- consumer1

次のプラグイン設定を * .example.comおよびtest.comドメイン名に適用します。

allow:
- consumer2
説明
  • この例では、route-aroute-bのルートは、ゲートウェイルートの作成時に指定されたルートです。 クライアント要求がルートの1つと一致する場合、名前consumer1である呼び出し元はゲートウェイにアクセスすることが許可されます。 他の発信者はゲートウェイにアクセスできません。

  • この例では、* .example.comtest.comドメイン名を使用して、リクエストのドメイン名を照合します。 クライアント要求がドメイン名の1つと一致する場合、名前consumer2である呼び出し元はゲートウェイにアクセスすることが許可されます。 他の発信者はゲートウェイにアクセスできません。

上記の設定では、次のリクエストからのアクセスが許可されます。

ユーザー名とパスワードはリクエストで指定されています。

# In this example, route-a in the request is matched.
# Use the -u parameter in the curl command to specify the username and password.
curl -u admin:123456  http://xxx.hello.com/test
# You can also directly specify the Authorization request header in which the username and password are base64-encoded.
curl -H 'Authorization: Basic YWRtaW46MTIzNDU2'  http://xxx.hello.com/test

認証が渡された後、X-Mse-Consumerフィールドが要求のヘッダーに追加され、呼び出し元を識別します。 この例では、このフィールドの値はconsumer1です。

上記の設定は、次のリクエストからのアクセスを拒否します。

  • リクエストにユーザー名とパスワードが指定されていないため、HTTPステータスコードの401が返されます。

    curl  http://xxx.hello.com/test
  • リクエストでユーザー名またはパスワードが無効で、HTTPステータスコード401が返されます。

    curl -u admin:abc  http://xxx.hello.com/test
  • リクエストのユーザー名とパスワードに一致する呼び出し元にはアクセス権限がなく、HTTPステータスコード403が返されます。

    # The consumer named consumer2 is not in the allow list of route-a.
    curl -u guest:abc  http://xxx.hello.com/test

ゲートウェイの認証の有効化

次の設定をゲートウェイに適用すると、インスタンスレベルで基本認証が有効になり、ゲートウェイにアクセスするにはすべてのリクエストを認証する必要があります。

global_auth: true
consumers:
- credential: 'admin:123456'
  name: consumer1
- credential: 'guest:abc'
  name: consumer2

エラーコード

HTTPステータスコード

エラーメッセージ

理由

401

Basic Authチェックによって拒否されたリクエスト。 基本認証情報が見つかりません。

リクエストで資格情報が指定されていません。

401

Basic Authチェックによって拒否されたリクエスト。 ユーザー名および /またはパスワードが無効です。

リクエスト資格情報が無効です。

403

Basic Authチェックによって拒否されたリクエスト。 無許可の消費者。

リクエストの呼び出し元にアクセス権限がありません。