1.2. 配置格式
配置使用 统一源 格式,简化了从一个配置源到另一个配置源的键/值对转换。请注意,这些格式也适用于 spi 选项。
- 命令行参数格式
-
命令行的值使用
-- <key-with-dashes> = <value>
格式。对于某些值,也存在一个- <abbreviation>= <value&
gt; 简写。 - 环境变量格式
-
环境变量的值使用大写的
KC_ <key_with_underscores> = <value>
格式。 - 配置文件格式
-
进入配置文件的值使用 <
key-with-dashes> = <value>
格式。 - 密钥存储配置文件格式
-
进入 KeyStore 配置文件的值使用
kc. <key-with-dashes>
格式。然后,<value
> 是存储在 KeyStore 中的密码。
在每个配置章节的末尾,查看 相关选项 标题,用于定义适用的配置格式。有关所有配置选项,请查看 所有配置。选择适用于您的用例的配置源和格式。
1.2.1. 示例 - 基于配置源的替代格式
以下示例显示了三个配置源的 db-url-host
的配置格式:
命令行参数
bin/kc.[sh|bat] start --db-url-host=mykeycloakdb
环境变量
export KC_DB_URL_HOST=mykeycloakdb
conf/keycloak.conf
db-url-host=mykeycloakdb
1.2.2. 命令行参数的格式
红帽构建的 Keycloak 使用许多命令行参数进行打包。要查看可用的配置格式,请输入以下命令:
bin/kc.[sh|bat] start --help
或者,查看所有服务器选项的所有配置。???
1.2.3. 环境变量的格式
您可以使用 ${ENV_VAR}
语法从 keycloak.conf
文件中的环境变量解析环境特定值:
db-url-host=${MY_DB_HOST}
如果环境变量无法解析,您可以指定回退值。在 mydb
之前使用 :
(colon):
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
设置该选项可让红帽从指定的文件而不是 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
执行该命令后,系统将提示您输入要 存储的密码,这表示 上面的 kc.db-password
属性的值。
创建 KeyStore 时,您可以使用以下参数启动服务器:
bin/kc.[sh|bat] start --config-keystore=/path/to/keystore.p12 --config-keystore-password=storepass --config-keystore-type=PKCS12
1.2.6. raw 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 属性的锁定图标表示构建时间属性。您可以运行
-
使用
[-cf|--config-file]
命令行参数来包括该文件。
同样,您还可以将 Quarkus 属性存储在 Java KeyStore 中。
请注意,一些 Quarkus 属性已在红帽构建的 Keycloak 配置中映射,如 quarkus.http.port
和类似基本属性。如果红帽构建的 Keycloak 使用了属性,在 quarkus.properties
中定义该属性键无效。红帽构建的 Keycloak 配置值优先于 Quarkus 属性值。
1.2.7. 在值中使用特殊字符
红帽构建的 Keycloak 依赖于 Quarkus 和 MicroProfile 来处理配置值。请注意,支持值表达式。例如,${some_key}
评估为 some_key
的值。
要禁用表达式评估,\
字符充当转义字符。特别是,它必须用于在出现定义表达式或重复时转义 $
字符的使用。例如,如果您希望配置值 my$password
,请改为使用 my\$\$password
。请注意,在使用大多数 unix shell 或其出现在属性文件中时,\
字符需要额外的转义或引用。例如,bash 单引号保留单个反斜杠 --db-password='my\$\$password'
。另外,使用 bash 双引号时,您需要额外的反斜杠 --db-password="my\\$\\$password"
。在属性文件中,还必须转义反斜杠字符:kc .db-password=my\\$\\$password