5.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作为第二个参数以及一些参数(如Authenticator)来检索,即使使用KeycloakSessionFactory即可检索。不建议以这种方式实施自己的提供程序,因为它可能会在以后被弃用。