Ошибка входа: не авторизован, вход в систему как другой пользователь Ошибка в Business-Central JBPM - PullRequest
0 голосов
/ 12 апреля 2020

Я новичок в работе с менеджером по автоматизации бизнес-процессов Red Hat. Мы разрабатываем приложение рабочего процесса. Считайте, что автоматизация бизнес-процессов включает в себя java управление бизнес-процессами (JBPM). Это приложение предназначено для генерации рабочих процессов.

Считайте, что у диспетчера автоматизации бизнес-процессов есть приложение под названием Business central, где пользователи могут проверять подлинность и управлять рабочими процессами.

По умолчанию менеджер автоматизации бизнес-процессов выполняет проверку подлинности. пользователь из базы данных h2 (java база данных файловой системы).

Теперь мне требуется перейти к базе данных PostgreSQL из h2. В этом случае мне нужно аутентифицировать пользователя из базы данных PostgreSQL.

Для этой реализации я сослался и использовал следующее docker изображение.

https://github.com/jboss-dockerfiles/business-central/blob/master/docker-compose-examples/jbpm-full-postgres.yml

Я выполнил все описанные инструкции для подключения базы данных PostgreSQL.

Пользователь по умолчанию h2 database - wbadmin .

В PostgreSQL,

я использовал базу данных по умолчанию, созданную docker. Ниже приведены подробности.

db : jbpm
user: jbpm
password : jbpm
driver : postgres

Я добавил пользователя в таблицу логинов в PostgreSQL.

username: xyz
password: xyz
role: admin,analyst,user,process-admin,kie-server

Я внес следующие изменения в файл standalone / configuration / stanalone. xml.

 <security-domain name="other" cache-type="default">
        <authentication>
            <login-module code="Remoting" flag="optional">
                <module-option name="password-stacking" value="useFirstPass"/>
            </login-module>
            <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                <module-option name="dsJndiName" value="java:jboss/datasources/jBPMDS"/>
                <module-option name="principalsQuery" value="select password from userlogin where username=?"/>
                <module-option name="rolesQuery" value="select role,'Roles' from userlogin where username=?"/>
            </login-module>
            <login-module code="org.kie.security.jaas.KieLoginModule" flag="optional" module="deployment.business-central.war"/>
            <login-module name="org.kie.security.jaas.KieLoginModule-2" code="org.kie.security.jaas.KieLoginModule" flag="optional" module="deployment.jbpm-casemgmt.war"/>
        </authentication>
    </security-domain>

В результате вышеуказанных изменений теперь бизнес-центр остановился для аутентификации пользователя из базы данных h2. Но удивительно, что он не аутентифицирует пользователя из базы данных PostgreSQL.

Отображается сообщение об ошибке

"Ошибка входа: не авторизован, войдите под другим пользователем"

enter image description here.

Ждем вашего ответа. Заранее спасибо

1 Ответ

1 голос
/ 15 апреля 2020

Мне удалось войти в систему с помощью «DatabaseServerLoginModule» после внесения следующих изменений.

1) Созданы 2 разные таблицы для имени пользователя и «ролей». Первая таблица имеет только имя пользователя и пароль. Вторая таблица имеет соответствующую роль для имени пользователя.

CREATE TABLE Users(username VARCHAR(64) PRIMARY KEY, passwd VARCHAR(64));
CREATE TABLE UserRoles(username VARCHAR(64), userRoles VARCHAR(64))

2) Ниже приведена конфигурация домена безопасности.

 <security-domain name="other" cache-type="default">
            <authentication>
                <login-module code="Remoting" flag="optional">
                     <module-option name="password-stacking" value="useFirstPass"/>
                </login-module>
                <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
                     <module-option name="dsJndiName" value="java:jboss/MySqlDS"/>
                     <module-option name="principalsQuery" value="select passwd from Users username where username=?"/>
                     <module-option name="rolesQuery" value="select userRoles, 'Roles' from UserRoles where username=?"/>
                 </login-module>
                <login-module code="org.kie.security.jaas.KieLoginModule" flag="optional" module="deployment.business-central.war"/>
             </authentication>
    </security-domain>

3) В таблице пользовательских ролей каждая строка должна иметь только одну роль, не добавляйте несколько ролей в запятой отдельный формат. Вот пример данных из моей БД.

username userRoles
xyz       admin
xyz       kie-server

username passwd
xyz      xyz@123
...