首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录失败:未授权,登录为业务中的另一个用户错误-中央JBPM

登录失败:未授权,登录为业务中的另一个用户错误-中央JBPM
EN

Stack Overflow用户
提问于 2020-04-12 06:16:12
回答 1查看 2.5K关注 0票数 0

我刚开始从事红帽子业务流程自动化经理的工作。我们正在开发一个工作流应用程序。Read业务流程自动化包括java业务流程管理(JBPM)。此应用程序的构建是为了生成工作流。

Read业务流程自动化管理器有一个名为business的应用程序,用户可以在该应用程序中验证和管理工作流。

默认情况下,业务流程自动化管理器从h2数据库(java文件系统数据库)对用户进行身份验证。

现在,我需要从PostgreSQL转移到h2数据库。在这种情况下,我需要从PostgreSQL数据库对用户进行身份验证。

对于该实现,我已经引用并使用了下面的docker映像。

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

我已经按照所有描述的指令连接了PostgreSQL数据库。

h2数据库的默认用户是wbadmin

在PostgreSQL中,

我使用了由docker创建的默认数据库。以下是详细情况。

db : jbpm用户: jbpm密码: jbpm驱动程序: postgres

我在PostgreSQL中向用户登录表中添加了一个用户。

用户名: xyz密码: xyz角色:管理、分析、用户、进程管理、kie-server

我在standalone/configuration/stanalone.xml文件中做了以下更改。

代码语言:javascript
复制
 <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数据库对用户进行身份验证。

它显示了一条错误信息

“登录失败:未授权,以另一用户身份登录”

期待您的回复。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-15 10:59:59

在进行以下更改后,我能够使用"DatabaseServerLoginModule“登录。

1)为用户名和“角色”创建了两个不同的表。FIrst表只有用户名和密码。第二个表具有相应的用户名角色。

代码语言:javascript
复制
CREATE TABLE Users(username VARCHAR(64) PRIMARY KEY, passwd VARCHAR(64));
CREATE TABLE UserRoles(username VARCHAR(64), userRoles VARCHAR(64))

2)下面是安全域配置。

代码语言:javascript
复制
 <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中的示例数据。

代码语言:javascript
复制
username userRoles
xyz       admin
xyz       kie-server

username passwd
xyz      xyz@123
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61167585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档