1.2. 配置格式
配置使用统一的 每源 格式,它简化了从一个配置源到另一个配置源的键/值对转换。请注意,这些格式也适用于 spi 选项。
- 命令行参数格式
-
命令行的值使用-- <
key-with-dashes> = <value>
格式。对于某些值,a- <abbreviation> = <value>
; 简写也存在。 - 环境变量格式
-
环境变量的值使用大写的
KC_ <key_with_underscores> = <value>
格式。 - 配置文件格式
-
进入配置文件的值使用 <
key-with-dashes> = <value>
格式。 - 密钥存储配置文件格式
-
进入 KeyStore 配置文件的值使用
kc. <key-with-dashes>
格式。<value
> 然后是存储在 KeyStore 中的密码。
在每个配置章节的末尾,查找 Relevant 选项 标题,该标题定义适用的配置格式。有关所有配置选项,请查看 所有配置。选择适用于您的用例的配置源和格式。
1.2.1. 示例 - 基于配置源的替代格式
以下示例显示了三个配置源的 db-url-host
的配置格式:
命令行参数
bin/kc.[sh|bat] start --db-url-host=mykeycloakdb
bin/kc.[sh|bat] start --db-url-host=mykeycloakdb
环境变量
export KC_DB_URL_HOST=mykeycloakdb
export KC_DB_URL_HOST=mykeycloakdb
conf/keycloak.conf
db-url-host=mykeycloakdb
db-url-host=mykeycloakdb
1.2.2. 命令行参数的格式
Red Hat build of Keycloak 是与很多命令行参数一起打包的进行配置。要查看可用的配置格式,请输入以下命令:
bin/kc.[sh|bat] start --help
bin/kc.[sh|bat] start --help
或者,请参阅 所有服务器选项的所有配置。
1.2.3. 环境变量的格式
您可以使用 ${ENV_VAR}
语法使用占位符从 keycloak.conf
文件中的环境变量解析特定于环境的值:
db-url-host=${MY_DB_HOST}
db-url-host=${MY_DB_HOST}
如果无法解析环境变量,您可以指定一个回退值。使用 :
(colon),如 mydb
之前所示:
db-url-host=${MY_DB_HOST:mydb}
db-url-host=${MY_DB_HOST:mydb}
1.2.4. 包含特定配置文件的格式
默认情况下,服务器始终从 conf/keycloak.conf
文件中获取配置选项。对于新安装,此文件仅包含注释设置,作为您在生产中运行时要设置的内容。
您还可以通过输入以下命令来使用 [-cf|--config-file]
选项指定显式配置文件位置:
bin/kc.[sh|bat] --config-file=/path/to/myconfig.conf start
bin/kc.[sh|bat] --config-file=/path/to/myconfig.conf start
设置该选项可让红帽构建来自指定文件中的 Keycloak 的读取配置,而不是 conf/keycloak.conf
。
1.2.5. 使用 Java KeyStore 文件设置敏感选项
由于 Keystore Configuration Source,您可以使用 [--config-keystore]
和 [--config-keystore-password]
选项直接从 Java KeyStore 加载属性。另外,您可以使用 [--config-keystore-type]
选项指定 KeyStore 类型。默认情况下,KeyStore 类型是 PKCS12
。
KeyStore 中的 secret 需要使用 PBE
(基于密码的加密)密钥算法存储,其中密钥是从 KeyStore 密码衍生而来。您可以使用以下 keytool
命令生成这样的 KeyStore:
keytool -importpass -alias kc.db-password -keystore keystore.p12 -storepass keystorepass -storetype PKCS12 -v
keytool -importpass -alias kc.db-password -keystore keystore.p12 -storepass keystorepass -storetype PKCS12 -v
执行该命令后,系统将提示您输入要 存储的密码,这代表 上面的 kc.db-password
属性的值。
创建 KeyStore 时,您可以使用以下参数启动服务器:
bin/kc.[sh|bat] start --config-keystore=/path/to/keystore.p12 --config-keystore-password=keystorepass --config-keystore-type=PKCS12
bin/kc.[sh|bat] start --config-keystore=/path/to/keystore.p12 --config-keystore-password=keystorepass --config-keystore-type=PKCS12
1.2.6. 原始 Quarkus 属性的格式
在大多数情况下,可用的配置选项应该足以配置服务器。但是,对于红帽构建的 Keycloak 配置中缺少的特定行为或功能,您可以使用底层 Quarkus 框架中的属性。
如果可能,请避免直接使用 Quarkus 中的属性,因为红帽构建的 Keycloak 不支持它们。如果您需要至关重要,请考虑先打开一个 增强请求。这种方法有助于我们改进红帽构建的 Keycloak 配置以满足您的需要。
如果无法增强请求,您可以使用原始 Quarkus 属性配置服务器:
-
在
conf
目录中创建quarkus.properties
文件。 在该文件中定义必要属性。
您只能使用 Quarkus 文档 中定义的 Quarkus 扩展 的子集。另外,请注意 Quarkus 属性的不同:
-
Quarkus 文档中的 Quarkus 属性的锁定图标表示构建时间属性。您可以运行
build
命令来应用此属性。有关 build 命令的详情,请查看以下部分来优化红帽构建的 Keycloak。 - Quarkus 指南中的属性没有锁定图标表示 Quarkus 和 Red Hat build of Keycloak 的运行时属性。
-
Quarkus 文档中的 Quarkus 属性的锁定图标表示构建时间属性。您可以运行
您还可以在 Java KeyStore 中存储 Quarkus 属性。
请注意,一些 Quarkus 属性已在红帽构建的 Keycloak 配置中映射,如 quarkus.http.port
和类似基本属性。如果红帽构建的 Keycloak 使用属性,在 quarkus.properties
中定义该属性键无效。Red Hat build of Keycloak 配置值优先于 Quarkus 属性值。
1.2.7. 在值中使用特殊字符
红帽构建的 Keycloak 依赖于 Quarkus 和 MicroProfile 来处理配置值。请注意,支持值表达式。例如,${some_key}
评估为 some_key
的值。
要禁用表达式评估,\
字符作为转义字符。特别是,当它们似乎定义表达式或重复时,必须使用它来转义 $
字符的使用。例如,如果您希望配置值 my$password
,请改为使用 my\$\$password
。请注意,在使用大多数 unix shell 时,\
字符需要额外的转义或引用,或者在属性文件中出现时。例如,bash 单引号保留单引号 --db-password='my\$\$password'
。此外,使用 bash 双引号时,您需要额外的 backslash --db-password="my\\$\\$password"。
在属性文件中类似,反斜杠字符也必须被转义:kc .db-password=my\\$\\$password