配置提供程序

了解如何配置提供程序

服务器在设计时就考虑了可扩展性,为此,它提供了许多服务提供商接口(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 的不同,可以同时存在多个提供程序实现,但运行时只会使用其中一个。对于这些 SPI,特定的提供程序是将在运行时激活和使用的主要实现。

要将提供程序配置为单个提供程序,您应该运行如下 build 命令

mycustomprovider 提供程序标记为 email-template SPI 的单个提供程序
bin/kc.[sh|bat] build --spi-email-template-provider=mycustomprovider

为 SPI 配置默认提供程序

根据 SPI 的不同,可以同时存在多个提供程序实现,并且默认使用其中一个。对于这些 SPI,除非请求特定的提供程序,否则将选择特定的提供程序作为默认实现。

以下逻辑用于确定默认提供程序

  1. 显式配置的默认提供程序

  2. 具有最高顺序的提供程序(顺序 ⇐ 0 的提供程序将被忽略)

  3. 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 命令。完成此操作后,服务器将在运行时为任何依赖于它们的提供程序提供这些额外的依赖项。

在此页