bin/kc.[sh|bat] build --vault=file
Keycloak 提供了兩種開箱即用的 Vault SPI 實作:基於純文字檔案的密鑰儲存庫和基於 Java KeyStore 的密鑰儲存庫。
基於檔案的密鑰儲存庫實作對於 Kubernetes/OpenShift 密鑰特別有用。您可以將 Kubernetes 密鑰掛載到 Keycloak 容器中,然後這些資料欄位將會以平面檔案結構的形式在掛載的資料夾中提供。
基於 Java KeyStore 的密鑰儲存庫實作適用於在裸機安裝中儲存密鑰。您可以使用 KeyStore 密鑰儲存庫,該密鑰儲存庫會使用密碼加密。
儲存在密鑰儲存庫中的密鑰可以在管理控制台的以下位置使用
取得 SMTP 郵件伺服器密碼
在使用基於 LDAP 的使用者聯合時取得 LDAP 繫結憑證
在整合外部身分提供者時取得 OIDC 身分提供者的用戶端密鑰
為了啟用基於檔案的密鑰儲存庫,您需要先使用以下建置選項來建置 Keycloak
bin/kc.[sh|bat] build --vault=file
類似地,對於基於 Java KeyStore 的密鑰儲存庫,您需要指定以下建置選項
bin/kc.[sh|bat] build --vault=keystore
Kubernetes/OpenShift 密鑰基本上是掛載的檔案。若要設定應該掛載這些檔案的目錄,請輸入此命令
bin/kc.[sh|bat] start --vault-dir=/my/path
Kubernetes/OpenShift 密鑰在 Keycloak 中是依據每個領域使用的,這需要檔案有一個命名慣例。
${vault.<realmname>_<secretname>}
為了正確處理密鑰,您需要將 <realmname> 或 <secretname> 中的所有底線都加倍,並用單一底線分隔。
領域名稱:sso_realm
期望的名稱:ldap_credential
產生的檔案名稱
sso__realm_ldap__credential
請注意 *sso* 和 *realm* 之間以及 *ldap* 和 *credential* 之間都有加倍的底線。
為了使用基於 Java KeyStore 的密鑰儲存庫,您需要先建立 KeyStore 檔案。您可以使用以下命令來執行此操作
keytool -importpass -alias <realm-name>_<alias> -keystore keystore.p12 -storepass keystorepassword
然後輸入您想要儲存在密鑰儲存庫中的值。請注意,-alias
參數的格式取決於所使用的金鑰解析器。預設的金鑰解析器是 REALM_UNDERSCORE_KEY
。
這預設會導致將該值以 SecretKeyEntry 中的通用 PBEKey (基於密碼的加密) 的形式儲存。
然後,您可以使用以下執行時期選項啟動 Keycloak
bin/kc.[sh|bat] start --vault-file=/path/to/keystore.p12 --vault-pass=<value> --vault-type=<value>
請注意,--vault-type
參數是選用的,預設為 PKCS12
。
然後,可以使用以下佔位符 (假設使用 REALM_UNDERSCORE_KEY
金鑰解析器) 在領域中存取儲存在密鑰儲存庫中的密鑰:${vault.realm-name_alias}
。
一個名為 secrettest
的領域
一個用於繫結憑證的期望名稱 ldapBc
產生的檔案名稱:secrettest_ldapBc
然後,您可以在管理控制台中使用此密鑰,方法是在設定 LDAP 使用者聯合時將 ${vault.ldapBc}
作為 繫結憑證
的值。
值 | |
---|---|
|
|
|
|
|
|
|
|
|
(預設) |