通过 CLI 配置 Keycloak eventsListener

Configure Keycloak eventsListener via CLI

我已经为 Keycloak 实现了自定义事件侦听器,并且能够使用 standalone-ha.xml

提供其配置
<!-- This works -->
<subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
    ...
    <spi name="eventsListener">
        <provider name="custom-listener" enabled="true">
            <properties>
                <property name="host" value="http://host.docker.internal:9999"/>
            </properties>
        </provider>
    </spi>
    ...

现在我正在尝试使用 CLI 实现相同的配置。

我叫jboss-cli.sh

[disconnected /] connect
[standalone@localhost:9990 /] /subsystem=keycloak-server/spi=eventsListener/provider=custom-listener/:map-put(name=properties,key=host,value=http://host.docker.internal:9999)

并得到错误:

{
    "outcome" => "failed",
    "failure-description" => "WFLYCTL0216: Management resource '[
    (\"subsystem\" => \"keycloak-server\"),
    (\"spi\" => \"eventsListener\")
]' not found",
    "rolled-back" => true
}

当我通过 CLI 浏览到适当的文件夹时,我没有看到可用于 Keycloak:

的所有 SPI
[standalone@localhost:9990 /] cd subsystem=keycloak-server/spi
[standalone@localhost:9990 spi] ls
connectionsHttpClient  connectionsJpa         hostname               publicKeyStorage       timer                  userSessionPersister
connectionsInfinispan  eventsStore            jta-lookup             realmCache             userCache              x509cert-lookup

问题是:其余的 SPI 在哪里?或者更具体地说,如何通过 CLI 配置 eventsListener SPI?

我终于明白了。

subsystem=keycloak-server/spi 的内容与 standalone-ha.xml 文件完全匹配。因此,eventsListener 在您明确创建它之前不可用。

此 CLI 指令序列有效:

/subsystem=keycloak-server/spi=eventsListener/:add
/subsystem=keycloak-server/spi=eventsListener/provider=custom-listener:add(enabled=true)
/subsystem=keycloak-server/spi=eventsListener/provider=custom-listener/:map-put(name=properties,key=host,value=http://host.docker.internal:9999)