Authentication Drools KnowledgeAgent和Guvnor:身份验证失败

Authentication Drools KnowledgeAgent和Guvnor:身份验证失败,authentication,drools,Authentication,Drools,这件事真让我抓狂 我在JBoss AS中有一个Guvnor(稍后将介绍更多版本)。我编辑了components.xml以启用身份验证(使用JAAS,我可以很好地设置用户和密码)和基于角色的权限。我有一个具有完全权限的“管理员”用户和一个具有只读权限的“代理”用户。到目前为止还不错,在Guvnor中,我可以看到用户和适当的权限,从浏览器中,我可以使用“admin”用户登录,上传规则等,我可以使用“agent”用户下载changeset.xml和二进制文件 现在,我从一个Java应用程序设置了一个知

这件事真让我抓狂

我在JBoss AS中有一个Guvnor(稍后将介绍更多版本)。我编辑了components.xml以启用身份验证(使用JAAS,我可以很好地设置用户和密码)和基于角色的权限。我有一个具有完全权限的“管理员”用户和一个具有只读权限的“代理”用户。到目前为止还不错,在Guvnor中,我可以看到用户和适当的权限,从浏览器中,我可以使用“admin”用户登录,上传规则等,我可以使用“agent”用户下载changeset.xml和二进制文件

现在,我从一个Java应用程序设置了一个知识代理。在UrlResource中,我设置了用户名(“代理”)和密码。changeset下载得很好,但是changeset.xml引用了其他资源(比如PKG)。下载失败(HTTP 401)。好像Drools在路上忘了我的证件

手工编辑changeset.xml,并添加enableBasicauthentAction、用户名和密码——效果很好。但这不是一条路,真的

我一直在寻找这两种解决方案:a)查看Guvnor中的一些选项面板,以便在部署包时自动设置要嵌入到changeset.xml中的内容b)找到一种方法,以便在Java项目中传递凭据,以便一切正常

现在,我尝试了Drools 5.1.1、5.2.FINAL、5.3.CR1,查看了这些版本的文档。我在5.3文档中发现的唯一一句话是:“变更集中的用户ID和密码应该与components.xml中配置的验证器的要求一致。”-谢谢,我理解,但如何做到这一点?请参阅“管理指南”中的“安全-身份验证和基本访问”部分了解更多详细信息

所以说真的,我错过了什么,或者我做错了什么?解决这个问题的唯一办法是不使用身份验证吗?或者在每次更改时手动编辑changeset.xmls


任何帮助都将不胜感激。

我在使用KnowledgeAgent时已经遇到此错误,似乎Url资源设置不正确(我指的是5.1.1版本) 作为一种解决方法,您可以设置一个新的代理事件侦听器,以便以这种方式强制使用用户名/密码(在我的示例中,它是一个内部类):

然后将此事件侦听器设置为您的代理:

agent.addEventListener(new AuthKnowledgeAgentEventListener("myusername","mypassword"));

就这样

这里发布了一个解决方案

[JBRULES-3465]


有了这个约束,每个代理只能使用一个用户名

我已经完全尝试了您的建议,但不幸的是,这只能帮助获取changeset.xml,但是之后,代理不够聪明,无法在变更集文件中重用为资源集提供的凭据。您的测试用例是什么?因为这段代码的目的正是在下载之前更新changeset.xml中的所有url资源。您是否按以下顺序设置了这些内容:-您使用侦听器设置了代理-您使用用户名和密码设置了变更集Url资源-您以这种方式应用变更集,这对我来说非常有效
agent.addEventListener(new AuthKnowledgeAgentEventListener("myusername","mypassword"));