Настройка Keycloak для запуска пользовательского Java в потоке аутентификации - PullRequest
7 голосов
/ 01 апреля 2019

Пожалуйста, дайте мне знать, если это неправильное место для публикации, но я искал информацию по этому поводу и не могу найти краткий ответ.

Я пытался использовать keycloak для удовлетворения требований управления пользователями нашего приложения. Несмотря на то, что я обнаружил, что клавиатура очень эффективна и эффективна, я наткнулся на то, что может стать тупиком для нашего использования.

Справочная информация:

Традиционно наше приложение использует очень простую структуру входа в систему, которая проверяет аутентификацию. Затем с помощью стороннего приложения, которое мы не можем изменить , определим роли, которые пользователь будет выполнять с помощью операции wsdl, и вставим в нашу базу данных приложений.

Например, если мы проверяем, что пользователь John Doe существует и аутентифицирует его учетные данные, мы вызываем wsdl в нашем Java-коде, чтобы узнать, какие роли должен иметь этот пользователь (супер-пользователь, гость, обычный пользователь). Очевидно, что весь этот фреймворк довольно несовершенен, и в конце концов именно поэтому мы решили использовать keycloak.

Задача

К сожалению, как я уже упоминал, мы не можем изменить стороннее приложение, и мы должны получить сопоставления ролей пользователей из этой операции wsdl. Я знаю, что есть способ создавать / изменять пользователей и роли keycloak с помощью функций Java. Однако, чтобы сохранить эту архитектуру модульной, есть ли способ настроить поток аутентификации для доступа к этому WSDL на стороне keycloaks для сопоставления ролей? (т.е. не в коде приложения, но, возможно, в скрипте в потоке аутентификации)

По сути, я ищу, как настроить поток аутентификации для запуска чего-то такого простого, как «hello world» в Java после проверки учетных данных, но до предоставления доступа.

Не уверен, что Аутентификация SPI может быть использована

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Да. Вы можете написать собственный аутентификатор, используя SPI аутентификации. Все шаги, приведенные для разработки Keycloak Authentication SPI, работают нормально, кроме развертывания. Для развертывания пользовательского SPI добавьте свой jar как модуль в standalone.xml. Чтобы добавить вновь созданный SPI, перейдите по ссылке ниже: Во-первых, вам нужно зарегистрировать свой SPI на сервере Keycloak. Добавьте еще один SPI в standalone.xml или domain.xml.

<spi name="authenticator_name"> <provider name="authenticator_name" enabled="true"/> </spi>

Чтобы зарегистрировать модуль для сервера Keycloak, добавьте модуль в подсистему Keycloak-server:

<subsystem xmlns="urn:jboss:domain:keycloak-server:1.1">
  <web-context>auth</web-context>
    <providers>
      <provider>classpath:${jboss.home.dir}/providers/*</provider>
      <provider>module:com.abc</provider>
        .....
        .....
</subsystem>

После внесения этих изменений вам нужно создать модуль в com / abc. шаги: Постройте код.

set KEYCLOAK_HOME=Keycloak Installation folder
%KEYCLOAK_HOME%/bin/jboss-cli.sh --command="module add --name={module_name}  --resources={path to your jar/your jar file name}  --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-server-spi,org.keycloak.keycloak-server-spi-private,org.keycloak.keycloak-services,org.jboss.resteasy.resteasy-jaxrs,javax.ws.rs.api,org.keycloak.keycloak-common"

После добавления модуля SPI на сервер Keycloak запустите сервер Keycloak и добавьте поток выполнения в Консоль администратора Keycloak (Аутентификация).

Для более подробной информации посетите: http://www.keycloak.org/docs/3.0/server_development/topics/providers.html http://www.keycloak.org/docs/3.0/server_development/topics/auth-spi.html

0 голосов
/ 09 апреля 2019

Что вам нужно, это Пользовательский SPI хранилища . Документация Keycloak обеспечивает хорошее пошаговое руководство по реализации простого провайдера хранения файлов на основе файлов. Здесь - полный исходный код примера проекта, используемого в документации.

Пользовательский SPI хранилища очень широк, поэтому Keycloak предлагает 2 подхода к повторному использованию функций, уже присутствующих в Keycloak:

  1. Разместите своих пользователей во внешней базе данных и дополните ее функциями Keycloak
  2. Хранить пользователей в Keycloak и импортировать соответствующую информацию из внешней базы данных

Есть документированные плюсы и минусы каждого подхода. Используя один из вышеуказанных подходов, вы можете реализовать крошечного провайдера, который использует удаленный сервис только для управления группами пользователей.

...