6.2. 使用可用供应商
在提供程序实施中,您可以使用 Red Hat Single Sign-On 中提供的其他提供程序。现有提供程序通常使用 KeycloakSession
来检索,该提供程序可供您的供应商使用,如 实施 SPI 一节中所述。
Red Hat Single Sign-On 有两个供应商类型:
单 实施供应商类型 - 红帽单点登录 运行时只能实施特定提供程序类型的单一主动实施。
例如
HostnameProvider
指定 Red Hat Single Sign-On 使用的主机名,并可为整个 Red Hat Single Sign-On 服务器共享该主机名。因此,这个提供程序对于 Red Hat Single Sign-On 服务器只能有一个有效实施。如果有多个提供程序实施可供服务器运行时使用,则需要将其中一个提供程序实施指定为默认的实施。
例如:
<spi name="hostname"> <default-provider>default</default-provider> ... </spi>
<spi name="hostname">
<default-provider>default</default-provider>
...
</spi>
默认值用作
factory.getId ()的 default
-provider 的值,必须与特定 providerProviderFactory.getId ()
返回的 ID 匹配。在代码中,您可以获取提供程序,如 keycloakSession.getProvider (HostnameProvider.class)
多种实施供应商类型 - Those 是供应商类型,允许多个实施可用并在 Red Hat Single Sign-On 运行时中协同工作。
例如,
EventListener
供应商允许有多个可用的实施并注册,这意味着特定的事件可以发送到所有监听程序(jboss-logging、sysout 等)。在代码中,您可以获取提供程序的指定实例,如session.getProvider (EventListener.class, "jboss-logging")
。您需要指定提供程序的provider_id
作为第二个参数,因为这里可能会有多个此提供程序类型的实例,如下所述。提供程序 ID 必须与特定供应商工厂实施的
ProviderFactory.getId ()
返回的 ID。某些提供程序类型可以通过使用ComponentModel
作为第二个参数来检索,一些(如Authenticator
)甚至需要通过KeycloakSessionFactory
的使用来检索。不建议以这种方式实施自己的供应商,因为将来可能会被弃用。