旧バージョンのドキュメントを参照しています。 最新のドキュメントはこちらをご参照ください。
アプリケーション登録のKey Authenticationを有効にする
Key Authenticationプラグインは、アプリケーション登録プラグインと組み合わせて認証のために使用できます。
キー認証プラグインは、Kong OAuth2 プラグイン用に生成されたものと同じクライアント ID を使用します。 OAuth2 プラグインが有効になっているサービスには、同じクライアント ID 認証情報を使用できます。
前提条件
- サービスを作成します。
- サービス上でアプリケーション登録プラグインを有効にします。
- まだ行っていない場合は、サービス用アプリケーションを有効にします。自動承認が有効でない場合、サービス契約はアドミンが承認する必要があります。
- 最初に作成したデフォルトの認証情報を使用したくない場合は、認証情報を生成してください。
Kong Manager で Key Authentication を有効にする
Kong Managerで、アプリケーション登録で使用するKey Authenticationを有効にするサービスにアクセスします。
-
ワークスペースの左側のナビゲーションペインで、 API Gateway> Services に移動します。
-
「サービス」ページで、サービスを選択し、 表示 をクリックします。
-
サービス(Services) ページのプラグイン(Plugins)ペインで、 プラグインを追加(Add a Plugin) をクリックします。
-
新しいプラグインの追加(Add New Plugin)ページの認証(Authentication )セクションで、 Key Authentication プラグインを見つけ、 有効化(Enable) をクリックします。
-
アプリケーションに応じてフィールドに入力します。この例では、サービスは事前入力されています。次のセクション、Key Authentication構成パラメータで説明するパラメータを参照して、フィールドに入力します。
-
作成 をクリックします。
Key Authentication構成パラメータ {#key-auth-params}
フォームパラメータ | 説明 |
---|---|
Service |
このプラグイン構成の対象となるサービス。必須。 |
Anonymous |
認証に失敗した場合に匿名のコンシューマとして使用するオプションの文字列(コンシューマー UID)値。空(デフォルト)の場合、リクエストは 4xx で失敗します。この値は Kong の内部にあるコンシューマの id 属性を参照する必要があり、custom_id を参照するのでは ない ことに注意してください。 |
Hide Credentials |
Upstreamサービスからの認証情報を表示するか非表示にするかを指定します。true の場合、プラグインはリクエストから認証情報(つまり、ヘッダー、クエリ文字列、またはキーを含むリクエストボディ)を削除してからプロキシします。デフォルト:false 。 |
Key in Body |
有効にすると、プラグインはリクエストボディを読み取り(リクエストにボディが1つあり、そのMIMEタイプがサポートされている場合)、その中でキーを見つけようとします。サポートされているMIMEタイプ:application/www-form-urlencoded 、application/json 、multipart/form-data 。デフォルト:false 。 |
Key in Header |
有効にすると(デフォルト)、プラグインはリクエストヘッダーを読み取り、その中のキーを見つけようとします。デフォルト: true。 |
Key in Query |
有効にすると(デフォルト)、プラグインはリクエストのクエリパラメータを読み取り、その中のキーを見つけようとします。デフォルト:true。 |
Key Names |
プラグインがキーを探すパラメータ名の配列を記述します。クライアントはそれらのキー名の1つで認証キーを送信する必要があり、プラグインは同じ名前のヘッダー、リクエストボディ、またはクエリ文字列パラメーターから認証情報を読み取ろうとします。キー名には、[a-z]、[A-Z]、[0-9]、[_] アンダースコア、および [-] ハイフンのみを含めることができます。必須。デフォルト:apikey 。 |
Run on Preflight |
プラグインがOPTIONS プリフライトリクエストで実行される (および認証を試行する) かどうかを示します。デフォルト: true 。 |
認証情報を生成する {#gen-client-id-cred}
APIキーとして使用するクライアントID認証情報を生成します。複数の認証情報を生成できます。
-
Dev Portal > My Apps ページで、アプリケーションの View をクリックします。
-
認証 ペインで、 認証情報の生成 をクリックします。
これで、クライアント IDをAPIキーとして使用してリクエストを行うことができます。
APIキー(クライアント識別子)を使用してリクエストを行う
認証情報のクライアントIDは、サービスへの認証済みのリクエストを行うためのAPIキーとして使用できます。
ヒント: キーリクエストの指示には、アプリケーションのサービス詳細エリアにある情報アイコンから、ユーザーインターフェイス内で直接アクセスすることもできます。 i アイコンをクリックして、サービスの詳細ページを開きます。
スクロールして、使用可能なすべての例を表示します。
リクエスト内のAPIキーの場所について
キーの場所のユースケース
- 推奨:サービス間呼び出しを実行する最も一般的で安全な方法として、
key_in_header
(デフォルトで有効)を使用します。 - ブラウザクライアントにリンクを共有する必要がある場合は、
key_in_query
を使用します(デフォルトで有効になっています)。 クエリパラメータのリクエストは、アプリケーションログやURLブラウザバーに表示される可能性があり、これによってAPIキーが公開されることに注意してください。 - ログインフォームなど、ブラウザでフォームを送信する場合は、
key_in_body
を使用します。このオプションは、あまり一般的ではないユースケースであり、コストが高くパフォーマンスの低いHTTPリクエストであるため、デフォルトでfalse
に設定されています。
セキュリティを強化するために、使用する必要のあるキーの場所のみを有効にします。
キーをクエリー文字列パラメータとしてリクエストを作成する
curl -X POST {proxy}/{route}?apikey={CLIENT_ID}
応答(キーの場所に関係なく、すべての有効なリクエストに対して同じになります):
HTTP/1.1 200 OK
...
ヘッダーでキーを使用してリクエストを行う
curl -X POST {proxy}/{route} \
--header "apikey: {CLIENT_ID}"
ボディでキーを使用してリクエストを行う
curl -X POST {proxy}/{route} \
--data "apikey:={CLIENT_ID}"
注:
key_in_body
パラメータはtrue
に設定する必要があります。