6.2. 使用可用的供应商
在供应商实现中,您可以使用红帽构建的 Keycloak 中提供的其他供应商。现有的提供程序通常可以通过使用 KeycloakSession
来检索,该提供程序可用于您的提供程序,如 实施 SPI 部分中所述。
Red Hat build of Keycloak 有两个供应商类型:
单实施供应商类型 - 红帽构建的 Keycloak 运行时只能有一个特定供应商类型的活跃实现。
例如
HostnameProvider
指定红帽构建的 Keycloak 以及为整个红帽构建的 Keycloak 服务器共享的主机名。因此,只能针对红帽构建的 Keycloak 服务器激活此供应商的单一实现。如果服务器运行时有多个提供程序实施,则其中一个需要指定为默认值。
例如:
bin/kc.[sh|bat] build --spi-hostname-provider=default
bin/kc.[sh|bat] build --spi-hostname-provider=default
用作
的值的默认值必须与特定供应商工厂实现的 default
-providerProviderFactory.getId ()
返回的 ID 匹配。在代码中,您可以获取 keycloakSession.getProvider (HostnameProvider.class)
等供应商
多个实现供应商类型 - 称为供应商类型,允许在红帽构建的 Keycloak 运行时提供多个实现。
例如,
EventListener
供应商允许有多个可用的和注册,这意味着特定的事件可以发送到所有监听器(jboss-logging、sysout 等)。在代码中,您可以获取指定的供应商实例,如session.getProvider (EventListener.class, "jboss-logging")
。您需要将provider_id
指定为第二个参数,因为可以有此提供程序类型的多个实例,如上所述。供应商 ID 必须与特定供应商工厂实施的
ProviderFactory.getId ()
返回的 ID 匹配。某些提供程序类型可以通过使用ComponentModel
作为第二个参数来检索,一些(如Authenticator
),甚至需要使用KeycloakSessionFactory
检索。不建议以这种方式实施自己的供应商,因为它可能会在以后被弃用。