我刚开始从事红帽子业务流程自动化经理的工作。我们正在开发一个工作流应用程序。Read业务流程自动化包括java业务流程管理(JBPM)。此应用程序的构建是为了生成工作流。
Read业务流程自动化管理器有一个名为business的应用程序,用户可以在该应用程序中验证和管理工作流。
默认情况下,业务流程自动化管理器从h2数据库(java文件系统数据库)对用户进行身份验证。
现在,我需要从PostgreSQL转移到h2数据库。在这种情况下,我需要从PostgreSQL数据库对用户进行身份验证。
对于该实现,我已经引用并使用了下面的docker映像。
我已经按照所有描述的指令连接了PostgreSQL数据库。
h2数据库的默认用户是wbadmin。
在PostgreSQL中,
我使用了由docker创建的默认数据库。以下是详细情况。
db : jbpm用户: jbpm密码: jbpm驱动程序: postgres
我在PostgreSQL中向用户登录表中添加了一个用户。
用户名: xyz密码: xyz角色:管理、分析、用户、进程管理、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数据库对用户进行身份验证。
它显示了一条错误信息
“登录失败:未授权,以另一用户身份登录”

。
期待您的回复。提前感谢
发布于 2020-04-15 10:59:59
在进行以下更改后,我能够使用"DatabaseServerLoginModule“登录。
1)为用户名和“角色”创建了两个不同的表。FIrst表只有用户名和密码。第二个表具有相应的用户名角色。
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)在用户角色表中,每行应该只有一个角色,不要以逗号分隔格式添加多个角色。这是我的DB中的示例数据。
username userRoles
xyz admin
xyz kie-server
username passwd
xyz xyz@123https://stackoverflow.com/questions/61167585
复制相似问题