Куда помещать сообщения в архив расширений Keycloak - PullRequest
1 голос
/ 30 апреля 2019

Мы создали расширение Keycloak (в основном это дополнительный Authenticator ) и пытаемся упаковать его как jar архив, чтобы мы могли развернуть его без копирования шаблонов и редактирования.properties files.

Аутентификатор использует настраиваемую форму, которую мы поместили в каталог theme-resources/templates, как описано в Theme Resources , - и он прекрасно работает.Однако мы не можем поместить сообщения в место, где они были получены.Вместо сообщения отображается ключ сообщения.Если мы помещаем сообщения непосредственно в keycloak-6.0.1/themes/base/login (а не в наш архив), это работает.

Это влияет на два места:

Локализованные сообщения в пользовательской форме (company.auth.title в приведенном ниже шаблоне Freemarker)

<#import "template.ftl" as layout>
<@layout.registrationLayout; section>
    <#if section = "header">
         ${msg("company.auth.title")}
    <#elseif section = "form">
    ...

Сообщение об ошибке в аутентификаторе (company.auth.invalid-code)

Response challenge = context.form()
    .setError("company.auth.invalid-code")
    .createForm("company-auth-challenge.ftl");
context.failureChallenge(AuthenticationFlowError.INVALID_CREDENTIALS, challenge);

Документация указывает на то, чтолокализованные файлы сообщений должны идти в theme-resources/resources, но это не работает.

Так, где мы должны поместить файлы сообщений (например, messages_en.properties) в наш архив jar, чтобы они были подобраны Keycloak?

1 Ответ

1 голос
/ 17 июля 2019

Это ограничение KeyCloak (по состоянию на 6.0.1).Сообщения о локализации взяты только из тем.Вам придется создать свою собственную тему и связать ее с JAR.А поскольку KeyCloak не объединяет темы, вы не можете переопределить стандартную тему keycloak в вашем JAR-файле, поэтому вы должны изменить тему входа в область на свою собственную тему.

Ваши шаблоны могут остаться в theme-resources , но канонически должен находиться в папке темы параллельно с theme.properties .Если ваша тема называется brokenspoon , то ваш MVP JAR должен содержать:

  • META-INF / keycloak-themes.json
  • theme / brokenspoon / login / messages/messages_en.properties
  • theme / brokenspoon / login / theme.properties
  • theme-resources / templates / my-custom-login.ftl

Содержимое keycloak-themes.json - Определите одну тему для входа в систему:

{
  "themes": [{
    "name" : "brokenspoon",
    "types": [ "login" ]
  }]
}

Содержимое theme.properties -Ваша пользовательская тема может расширить стандартную тему keycloak :

parent=keycloak

Развернуть JAR, перезапустить сервер Keycloak , а затем изменить тему по умолчанию для области в разделе Настройки области Темы .Важно перезапустить сервер перед изменением настроек темы, но после развертывания JAR, поскольку в противном случае темы из JAR не загружаются.По-видимому, это связано с внутренним механизмом кэширования, характерным для тем.

...