6.3. 注册供应商实现
注册供应商实施的方法有两种。在大多数情况下,最简单的方法是使用 Red Hat Single Sign-On 部署器方法,因为这可为您处理多个依赖项。它还支持热部署和重新部署。
另一种方法是将 作为模块部署。
如果您要创建自定义 SPI,则需要将其部署为模块,否则我们推荐使用 Red Hat Single Sign-On deployer 方法。
6.3.1. 使用 Red Hat Single Sign-On deployer
如果您将供应商 jar 复制到 Red Hat Single Sign-On standalone/deployments/
目录中,则您的供应商将自动部署。热部署也可以正常工作。此外,您的供应商 jar 与在 JBoss EAP 环境中部署的其他组件类似,它们可以使用 jboss-deployment-structure.xml
文件等功能。您可以通过此文件来设置对其他组件的依赖项,并加载第三方 jars 和模块。
供应商 jar 也可以包含在其他可部署单元中,如 EAR 和 WAR。使用 EAR 进行部署实际上使得使用第三方 jar 非常容易,因为您可以将这些库放在 EAR 的 lib/
目录中。
6.3.2. 使用模块注册供应商
流程
使用 jboss-cli 脚本或手动创建文件夹创建一个模块。
例如,要使用
jboss-cli
脚本添加事件监听程序 sysout 示例供应商,请执行:KEYCLOAK_HOME/bin/jboss-cli.sh --command="module add --name=org.acme.provider --resources=target/provider.jar --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-server-spi"
或者,您可以在
KEYCLOAK_HOME/modules
中手动创建模块,并添加您的 jar 和module.xml
。例如,创建
KEYCLOAK_HOME/modules/org/acme/provider/main
文件夹。然后,将provider.jar
复制到此文件夹,并使用以下内容创建module.xml
:<?xml version="1.0" encoding="UTF-8"?> <module xmlns="urn:jboss:module:1.3" name="org.acme.provider"> <resources> <resource-root path="provider.jar"/> </resources> <dependencies> <module name="org.keycloak.keycloak-core"/> <module name="org.keycloak.keycloak-server-spi"/> </dependencies> </module>
使用 Red Hat Single Sign-On 注册此模块,方法是编辑
standalone.xml
、standalone-ha.xml
或domain.xml
的 keycloak-server 子系统部分,并将它添加到提供程序:<subsystem xmlns="urn:jboss:domain:keycloak-server:1.2"> <web-context>auth</web-context> <providers> <provider>module:org.keycloak.examples.event-sysout</provider> </providers> ...
6.3.3. 禁用供应商
您可以通过在 standalone.xml
、standalone-ha.xml
或 domain.xml
中将 provider 的 enabled 属性设置为 false 来禁用供应商。例如,禁用 Infinispan 用户缓存提供程序添加:
<spi name="userCache"> <provider name="infinispan" enabled="false"/> </spi>