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、提供程序和属性)都应为小写,如果名称为驼峰式大小写,例如 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
命令。
在实现提供程序时,您可能需要使用一些服务器发行版中不可用的第三方依赖项。
在这种情况下,您应将任何其他依赖项复制到 providers
目录并运行 build
命令。完成此操作后,服务器将在运行时为任何依赖于它们的提供程序提供这些其他依赖项。