spi-<spi-id>-<provider-id>-<property>=<value>
服务器在设计时就考虑了可扩展性,为此,它提供了许多服务提供商接口(SPI),每个接口都负责为服务器提供特定的功能。在本指南中,您将了解围绕 SPI 及其各自提供程序配置的核心概念。
阅读本指南后,您应该能够使用本文解释的概念和步骤来安装、卸载、启用、禁用和配置任何提供程序,包括您为扩展服务器功能而实现的提供程序,以便更好地满足您的需求。
可以使用特定的配置格式来配置提供程序。该格式包括:
spi-<spi-id>-<provider-id>-<property>=<value>
<spi-id>
是您要配置的 SPI 的名称。
<provider-id>
是您要配置的提供程序的 ID。这是为相应的提供程序工厂实现设置的 ID。
<property>
是您要为给定提供程序设置的属性的实际名称。
所有这些名称(对于 spi、provider 和 property)都应为小写,如果名称采用驼峰式命名法(例如 myKeycloakProvider
),则应在大小写字母前包含破折号 (-
),如下所示:my-keycloak-provider
。
以 HttpClientSpi
SPI 为例,SPI 的名称是 connectionsHttpClient
,可用的提供程序实现之一名为 default
。为了设置 connectionPoolSize
属性,您将使用如下配置选项
spi-connections-http-client-default-connection-pool-size=10
提供程序配置选项在启动服务器时提供。有关选项的所有支持配置源和格式,请参阅 配置 Keycloak。例如,通过命令行选项
connections-http-client
SPI 的 default
提供程序设置 connection-pool-size
bin/kc.[sh|bat] start --spi-connections-http-client-default-connection-pool-size=10
根据 SPI 的不同,可以同时存在多个提供程序实现,但运行时只会使用其中一个。对于这些 SPI,特定的提供程序是将在运行时激活和使用的主要实现。
要将提供程序配置为单个提供程序,您应该运行如下 build
命令
mycustomprovider
提供程序标记为 email-template
SPI 的单个提供程序bin/kc.[sh|bat] build --spi-email-template-provider=mycustomprovider
根据 SPI 的不同,可以同时存在多个提供程序实现,并且默认使用其中一个。对于这些 SPI,除非请求特定的提供程序,否则将选择特定的提供程序作为默认实现。
以下逻辑用于确定默认提供程序
显式配置的默认提供程序
具有最高顺序的提供程序(顺序 ⇐ 0 的提供程序将被忽略)
ID 设置为 default
的提供程序
要将提供程序配置为默认提供程序,您应该运行如下 build
命令
mycustomhash
提供程序标记为 password-hashing
SPI 的默认提供程序bin/kc.[sh|bat] build --spi-password-hashing-provider-default=mycustomprovider
要启用或禁用提供程序,您应该运行如下 build
命令
bin/kc.[sh|bat] build --spi-email-template-mycustomprovider-enabled=true
要禁用提供程序,请使用相同的命令并将 enabled
属性设置为 false
。
自定义提供程序应打包在 Java 存档 (JAR) 文件中,并复制到分发包的 providers
目录中。之后,您必须运行 build
命令,以便使用 JAR 文件中的实现更新服务器的提供程序注册表。
需要此步骤是为了优化服务器运行时,以便提前知道所有提供程序,而不是仅在启动服务器或运行时才发现。
要卸载提供程序,您应该从 providers
目录中删除 JAR 文件,然后再次运行 build
命令。