为KeyCloak构建事件监听器SPI(插件)

在此博客中,我将讨论如何为KeyCloak构建事件侦听器插件(称为SPI)。

那么,什么是Keycloak

KeycloakRedHat构建的开源身份和访问管理框架。 它提供了许多高级功能,例如SSO,社交身份验证,对多种身份验证协议的支持等。在此处了解更多信息: https//www.keycloak.org/

但是最重​​要的功能之一是能够通过简单地构建插件来扩展KeyCloak的任何功能。

在今年夏天的实习期间,我们需要记录KeyCloak中发生的所有用户(和管理员)事件,并将它们发送到外部系统进行分析。 在许多情况下都需要这样做。 (一个示例是,如果您使用外部SIEM记录和分析事件)

默认情况下,KeyCloak日志不包含用户/管理员事件。 即使启用了该功能,也很难构建一个外部系统来监视和解析日志以提取所需的事件。 相反,我们可以为KeyCloak构建一个插件以挂接到系统中,并在事件发生时执行“某些操作” (在我们的情况下,触发外部API调用)

因此,让我们建立一个:)

注意 :这里提供了事件侦听器的完整代码。

GitHub徽标 adwait-thattey / keycloak-event-listener-spi

示例事件侦听器SPI,用于keycloak

我将在这里使用Maven来管理依赖项和构建项目。

因此,让我们首先整理一下pom.xml

(如果您不熟悉Maven,我们将在Maven中使用pom.xml文件列出所有项目详细信息,包括所有依赖项)

(如果看不到上述要点,则可以在此处找到该文件

pom.xml ,我们定义了父级详细信息,项目名称Sample Event Listener ,版本,工件ID(此处为sample_event_listener ),依赖项和构建配置。


下一步是实施SPI。 为此,我们需要实现2个类。 ProviderProviderFactory

因此,让我们在src/main/java创建我们的包。
此处的包名称为com.coderdude.sampleeventlistenerprovider.provider

coderdude :因为我的开发别名是coderdude:D

sampleeventlistenerprovider :可以更短一些,但让我们保留

provider :最后一个提供程序在那里,因为您的提供程序中可能会使用其他模块。

现在,此软件包将包含上面讨论的2个类。
Provider类包含插件的实际逻辑。 ProviderFactory是用于初始化ProviderFactory的包装器。 区别很重要

  • 仅在启动KeyCloak时初始化Factory 。 每次需要时, Factory都会创建一个Provider的新实例。 (就我们而言,每次事件发生)
  • 仅存在1个Factory实例。 多个提供程序可以同时存在(例如2个事件同时发生)。
  • 提供程序完成任务后将被销毁。 只要KeyCloak运行,工厂就存在。
  • Factory中的任何错误都将使KeyCloak崩溃。 Provider中的错误只会进入日志,而Keycloak的其余部分将正常运行

因此,让我们从创建提供者开始。
的类的名称将是SampleEventListenerProvider它实现了EventListenerProvider接口(该接口由KeyCloak提供)

package com . coderdude . sampleeventlistenerprovider . provider ;

import org.keycloak.events.Event ;
import org.keycloak.events.EventListenerProvider ;
import org.keycloak.events.admin.AdminEvent ;

import java.util.Map ;


public class SampleEventListenerProvider implements EventListenerProvider {
     

    public Sample
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值