Как сделать страницу конфигурации провайдера идентификации видимой в Keycloak? - PullRequest
0 голосов
/ 11 октября 2018

Я пишу собственный провайдер идентификации для Keycloa, который я хочу развернуть, используя метод deployer (поскольку я хочу развернуть его в Docker-контейнерах ).Следуя примеру , который я обнаружил в Интернете, я создал проект maven, в котором с помощью плагина maven-assembly-plug я создаю jar с зависимостями (но я отфильтровал различные реализации службзависимости позволяют мне просто сохранить службу провайдера идентификации).

Кажется, что все работает частично правильно:

  • Журнал Keycloak указывает, что мой провайдер идентификатора загружается / загружается: keycloak_1 | 09:23:20,056 INFO [org.jboss.as.server] (ServerService Thread Pool -- 29) WFLYSRV0010: Deployed "mycompnay-oidc-id-provider-0.0.1-SNAPSHOT-jar-with-dependencies.jar" (runtime-name : "mycompany-oidc-id-provider-0.0.1-SNAPSHOT-jar-with-dependencies.jar")
  • Когда я захожу на панель Identity Providers , появляется новый поставщик (см. Скриншот)

my id provider is loaded !

Но когда я пытаюсь его настроить, все выходит из строя:

I should have a configuration screen

Проблема в том, что Keycloak не выводит строго никаких журналов (даже когда я настраиваю уровень журналадо максимума).

В моем проекте он использует следующую организацию кода (которая копируется в jar-with-зависимости)

+---src
    +---build
    |   \---assembly
    +---main
    |   +---java
    |   |   \---com
    |   |       \---mycompany
    |   |           \---mygroup
    |   |               \---security
    |   |                   \---oidc
    |   \---resources
    |       +---META-INF
    |       |   \---services
    |       \---themes
    |           \---base
    |               \---admin
    |                   \---resources
    |                       \---partials
    \---test
        +---java
        \---resources

Чего мне не хватает?

1 Ответ

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

Может быть, вы уже поняли это.

Это не очень хорошо задокументировано ... Я сделал нечто подобное месяц назад и столкнулся с той же проблемой.Я понял это в значительной степени, подсунув и угадав, так что, возможно, это не лучший способ сделать это, но я скажу то, что я знаю по этому поводу:

Вам нужны и idp, и частичная страницазарегистрирован правильно.Если честно, я понятия не имею, можете ли вы просто расширить базовую тему администратора keycloak таким образом.Я попробовал это, но ужасно потерпел неудачу.Поэтому я создал свою собственную тему, расширяющую базовую:

, предполагая, что ваш idp называется foo


src/main/resources/theme/foo/admin/theme.properties

parent=keycloak
import=common/keycloak

src/main/resources/theme/foo/admin/resources/partials/realm-identity-provider-foo.html

<div data-ng-include 
  data-src="resourceUrl + '/partials/realm-identity-provider-oidc.html'">
</div>

src/main/resources/theme/foo/admin/resources/partials/realm-identity-provider-foo.html

<div data-ng-include 
  data-src="resourceUrl + '/partials/realm-identity-provider-oidc.html'">
</div>

(я использую oidc, так как мой idp расширяет этот, но выздесь можно использовать все, что имеет смысл для вашего случая)


src/main/resources/theme/foo/admin/resources/partials/realm-identity-provider-foo-ext.html этот последний файл пуст в моем случае, но, насколько я помню, он у вас должен быть


Затем в консоли администратора нужно перейти и изменить тему администратора на foo, и вы должны обновить браузер, чтобы он начал собирать ресурсы из новой темы.Важно отметить, что если вы вошли в систему с пользователем из другой области (например, администратор из основной области), вам нужно изменить тему администратора в основной области, так как эта тема вы фактически используете сейчас.В случае успеха вы должны начать видеть в своих devtools, что ресурсы шаблонов теперь исходят из вашей темы, например, auth/resources/4.4.0.final/admin/foo/templates/kc-tabs-realm.html Если это так, то ваша страница idp должна работать или, по крайней мере, вы сможете получить ее отсюда.

Я знаю, что это не идеальный ответ, но он может подсказать, на что следует обратить внимание.

Если вы добились прогресса или нашли лучший способ, поделитесь!

...