6.2. 使用可用供应商
在供应商实现中,您可以使用 Red Hat build of Keycloak 中提供的其他供应商。现有提供程序通常使用 KeycloakSession 来检索,该提供程序可供您的供应商使用,如 实施 SPI 一节中所述。
红帽构建的 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)
多个实现供应商类型 - Those 是供应商类型,它允许在红帽构建的 Keycloak 运行时中有多个实施并协同工作。
例如,
EventListener供应商允许有多个可用的实现并注册,这意味着特定的事件可以发送到所有监听器(jboss-logging、sysout 等)。在代码中,您可以获取供应商的指定实例,如session.getProvider (EventListener.class, "jboss-logging")。您需要将供应商的provider_id指定为第二个参数,因为上面所述,该供应商类型有多个实例。供应商 ID 必须与特定供应商工厂实施的
ProviderFactory.getId ()返回的 ID 匹配。某些提供程序类型可以通过使用ComponentModel作为第二个参数来检索,即使需要使用KeycloakSessionFactory来检索一些提供程序(例如Authenticator)。不建议以这种方式实施您自己的供应商,因为它将来可能被弃用。