Да.Я бы реализовал SPI и соответствующие ProviderFactory и Provider, как вы упомянули.
В прошлом я писал прослушиватель Kafka, который выбирает сообщения из темы, используя эту стратегию SPI, и она работает довольно хорошо.Вам нужно будет сделать следующее, чтобы заставить его работать:
- Добавьте ваш класс Spi в
META-INF/services/org.keycloak.provider.Spi
- Создайте файл с именем вашего
ProviderFactory
в META-INF/services
и добавьте туда класс impl фабрики вашего провайдера - Добавьте jar как модуль в `modules / system / слои / keycloak / com / yourcompany / yourmodule / main
- Добавьте
module.xml
Конфиг в том же каталоге, что и выше.Вам нужно будет добавить соответствующие зависимости здесь.Поскольку вы реализуете собственный протокол, вам, вероятно, потребуется добавить модуль, содержащий эту библиотеку, и добавить его в качестве зависимости.Например, мне пришлось добавить kafka-clients.jar в качестве отдельного модуля, а затем перечислить его как зависимость в моем настраиваемом поставщике. - Изменить
standalone.xml
и / или standalone-ha.xml
, чтобы добавить поставщика (см.существующий блок <providers>
в подсистеме keycloak-server).Keycloak имеет некоторую документацию о том, как это сделать.