bin/kc.[sh|bat] start --spi-connections-http-client-default-<configurationoption>=<value>
Keycloak は、保護対象のアプリケーションやサービスに対してリクエストを行う必要が часто あります。Keycloak は、HTTP クライアントを使用してこれらの送信接続を管理します。このガイドでは、クライアント、接続プール、プロキシ環境設定、タイムアウトなどの設定方法について説明します。
Keycloak が TLS を使用して送信リクエストを実行できるように Keycloak トラストストアを設定する方法については、信頼済み証明書の設定 を参照してください。
Keycloak が送信通信に使用する HTTP クライアントは高度に設定可能です。Keycloak 送信 HTTP クライアントを設定するには、次のコマンドを入力します
bin/kc.[sh|bat] start --spi-connections-http-client-default-<configurationoption>=<value>
以下はコマンドオプションです
接続確立がタイムアウトになるまでの最大時間(ミリ秒)。デフォルト:未設定。
ソケット接続がタイムアウトになるまでの、2 つのデータパケット間の非アクティブ時間の最大時間(ミリ秒)。デフォルト:5000ms
送信接続の接続プールのサイズ。デフォルト:128。
ホストごとにプールできる接続数。デフォルト:64。
接続の最大生存時間(ミリ秒)。デフォルト:未設定。
アイドル接続が接続プールに留まる最大時間(ミリ秒)。アイドル接続は、バックグラウンドクリーナースレッドによってプールから削除されます。このチェックを無効にするには、このオプションを -1 に設定します。デフォルト:900000。
Cookie のキャッシュを有効または無効にします。デフォルト:true。
Java キーストアファイルへのファイルパス。このキーストアには、mTLS 用のクライアント証明書が含まれています。
クライアントキーストアのパスワード。client-keystore
が設定されている場合は必須。
クライアントの秘密鍵のパスワード。client-keystore が設定されている場合は必須。
送信 HTTP リクエストのプロキシ設定を指定します。詳細については、送信 HTTP リクエストのプロキシマッピング を参照してください。
送信リクエストに HTTPS が必要で、この設定オプションが true に設定されている場合、トラストストアを指定する必要はありません。この設定は、SSL 証明書の検証を無効にするため、開発中のみ使用し、本番環境では絶対に使用しないでください。デフォルト:false。
送信リクエストでプロキシを使用するように設定するには、次の標準プロキシ環境変数を使用してプロキシマッピングを設定できます:HTTP_PROXY
、HTTPS_PROXY
、および NO_PROXY
。
HTTP_PROXY
および HTTPS_PROXY
変数は、送信 HTTP リクエストに使用されるプロキシサーバーを表します。Keycloak は、2 つの変数を区別しません。両方の変数を定義した場合、プロキシサーバーが使用する実際のスキームに関係なく、HTTPS_PROXY
が優先されます。
NO_PROXY
変数は、プロキシを使用しないホスト名のカンマ区切りリストを定義します。指定した各ホスト名について、そのすべてのサブドメインもプロキシの使用から除外されます。
環境変数は小文字または大文字にすることができます。小文字が優先されます。たとえば、HTTP_PROXY
と http_proxy
の両方を定義した場合、http_proxy
が使用されます。
HTTPS_PROXY=https://www-proxy.acme.com:8080
NO_PROXY=google.com,login.facebook.com
この例では、次の結果が発生します
すべての送信リクエストはプロキシ https://www-proxy.acme.com:8080
を使用します。ただし、google.com や auth.google.com などの google.com のサブドメインへのリクエストは除きます。
login.facebook.com とそのすべてのサブドメインは、定義されたプロキシを使用しませんが、groups.facebook.com は login.facebook.com のサブドメインではないため、プロキシを使用します。
プロキシマッピングに環境変数を使用する代わりに、Keycloak によって送信される送信リクエストのプロキシマッピングのカンマ区切りリストを設定する方法があります。プロキシマッピングは、regex ベースのホスト名パターンと proxy-uri で構成され、hostname-pattern;proxy-uri
の形式を使用します。
たとえば、次の正規表現を考えてみましょう
.*\.(google|googleapis)\.com
このコマンドを入力して、regex ベースのホスト名パターンを適用します
bin/kc.[sh|bat] start --spi-connections-http-client-default-proxy-mappings='.*\\.(google|googleapis)\\.com;http://www-proxy.acme.com:8080'
バックスラッシュ文字 \
は、マイクロプロファイル構成がマッピングの配列を解析するために再度エスケープされます。
送信 HTTP リクエストのプロキシを決定するために、次のことが起こります
ターゲットホスト名は、設定されたすべてのホスト名パターンと照合されます。
最初に一致したパターンの proxy-uri が使用されます。
設定されたパターンがホスト名と一致しない場合、プロキシは使用されません。
プロキシサーバーが認証を必要とする場合は、プロキシユーザーの資格情報を username:password@
の形式で含めます。例:
.*\.(google|googleapis)\.com;http://proxyuser:password@www-proxy.acme.com:8080
# All requests to Google APIs use http://www-proxy.acme.com:8080 as proxy
.*\.(google|googleapis)\.com;http://www-proxy.acme.com:8080
# All requests to internal systems use no proxy
.*\.acme\.com;NO_PROXY
# All other requests use http://fallback:8080 as proxy
.*;http://fallback:8080
この例では、次のことが起こります
proxy-uri の特殊な値 NO_PROXY
が使用されます。これは、関連付けられたホスト名パターンに一致するホストにはプロキシが使用されないことを意味します。
キャッチオールパターンはプロキシマッピングを終了し、すべての送信リクエストにデフォルトのプロキシを提供します。