我们正在寻求将Keycloak用作身份管理系统。使Keycloak使用自定义消息传递协议(不是HTTP)的最佳方法是什么?我正在查看有关extending the server by adding a custom SPI的《 Keycloak服务器开发人员指南》部分。这是正确的方法吗?
答案 0 :(得分:1)
是的。正如您所提到的,我将实现SPI以及相应的ProviderFactory和Provider。
过去,我编写了一个Kafka侦听器,该侦听器使用此SPI策略从主题中提取消息,并且效果很好。您需要执行以下操作才能使其正常工作:
META-INF/services/org.keycloak.provider.Spi
ProviderFactory
中以您的META-INF/services
的名称创建文件,并在其中添加您的提供者工厂impl类module.xml
配置。您需要在此处适当地添加依赖项。由于要实现自定义协议,因此可能需要添加一个包含该库的模块,并将其添加为依赖项。例如,我必须将kafka-clients.jar添加为单独的模块,然后在我的自定义提供程序中将其列为依赖项。standalone.xml
和/或standalone-ha.xml
以添加提供程序(请参阅keycloak-server子系统下现有的<providers>
块)。 Keycloak上有一些有关如何执行此操作的文档。