Добавление раздела с помощью spi: default-provider не оказывает влияния на образ докера keycloak - PullRequest
0 голосов
/ 10 октября 2018

Я создал собственный emailSender провайдер для keycloak.

После добавления его в развертывания я видел обоих провайдеров в информации о сервере, и попытка отправить электронную почту привела к NPE (провайдер не был возвращен).

После добавления раздела:

        <spi name="emailSender">
            <default-provider>multipart</default-provider>
        </spi>

в подсистеме urn:jboss:domain:keycloak-server:1.1 на standalone/configuration/standalone.xml и перезапуска сервера, я вижу только одного провайдера для emailSender, и почта отправляется через моего провайдера.

Теперь я воспроизвел те же операции в образе докера:

FROM jboss/keycloak:4.5.0.Final
USER root
RUN yum -y install patch && yum clean all && rm -rf /var/cache/yum
ADD --chown=1000:1000 target/lib/* /opt/jboss/keycloak/standalone/deployments
ADD --chown=1000:1000 config /opt/jboss/config
RUN patch -R /opt/jboss/keycloak/standalone/configuration/standalone.xml < /opt/jboss/config/standalone.xml.diff
USER 1000

После этого у меня точно такой же раздел spi в том же месте в standalone.xml, однакокажется, не имеет никакого эффекта.Я вижу обоих провайдеров и получаю NPE при попытке отправить письмо.

Что здесь могло пойти не так?Я проверил точку входа, и она запускает keycloak в автономном режиме, и развертывание моего провайдера завершается успешно, поэтому /opt/jboss/keycloak/standalone/, кажется, является правильным каталогом для настройки ....

1 Ответ

0 голосов
/ 10 октября 2018

Файл конфигурации по умолчанию был недавно изменен, в 4.5.0. Конечное изображение standalone-ha.xml должно быть изменено.

Diff / patch также является неоптимальным подходом.Правильный ответ: jboss-cli:

JBOSS_HOME/bin/jboss-cli.sh --file="/opt/jboss/cli/email-sender.cli" 

email-sender.cli:

embed-server --server-config=standalone-ha.xml --std-out=echo
/subsystem=keycloak-server/spi=emailSender:add
/subsystem=keycloak-server/spi=emailSender:write-attribute(name=default-provider, value="multipart")
stop-embedded-server
...