bin/kc.[sh|bat] start --spi-connections-http-client-default-<configurationoption>=<value>
Keycloak 通常需要向其保護的應用程式和服務發出請求。Keycloak 使用 HTTP 用戶端管理這些外送連線。本指南說明如何設定用戶端、連線池、代理環境設定、逾時等等。
請參閱設定信任憑證,了解如何設定 Keycloak 信任儲存區,使 Keycloak 能夠使用 TLS 執行外送請求。
Keycloak 用於外送通訊的 HTTP 用戶端具有高度可配置性。若要設定 Keycloak 外送 HTTP 用戶端,請輸入以下命令
bin/kc.[sh|bat] start --spi-connections-http-client-default-<configurationoption>=<value>
以下是命令選項
建立連線逾時的最大時間(以毫秒為單位)。預設值:未設定。
兩個數據封包之間不活動的最大時間,直到 socket 連線逾時(以毫秒為單位)。預設值:5000 毫秒
外送連線的連線池大小。預設值: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 不區分這兩個變數。如果您同時定義這兩個變數,則無論代理伺服器實際使用的協定為何,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 或 google.com 的任何子網域(例如 auth.google.com)的請求除外。
login.facebook.com 及其所有子網域不使用定義的代理,但 groups.facebook.com 使用代理,因為它不是 login.facebook.com 的子網域。
除了使用環境變數進行代理對應之外,另一種方法是針對 Keycloak 發送的外送請求設定以逗號分隔的代理對應清單。代理對應包含一個基於 regex 的主機名稱模式和一個 proxy-uri,格式為 hostname-pattern;proxy-uri
。
例如,請考慮以下 regex
.*\.(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,這表示對於符合相關主機名稱模式的主機不使用代理。
萬用字元模式會結束代理對應,為所有外送請求提供預設代理。
值 | |
---|---|
|