我在 Tomcat 6.0 服务器上运行 Drools Guvnor,但让身份验证正常工作的时间最糟糕。这是针对一家小公司的,所以我不需要很多用户,而且 LDAP 将是巨大的矫枉过正(据报道,这是一个巨大的痛苦)。我的第一个想法是将它与 JAAS 联系起来,它有一些工具。不幸的是,我无法完全理解我找到的在 Tomcat 上使用 JAAS 的说明。从我的阅读来看,第一步是“编写自己的 JAAS 实现”,这显然很疯狂。(我对 Tomcat 真的一无所知,对服务器管理也不太了解,这可能无济于事。)
所以,去他妈的 JAAS,我说,我将只使用 Tomcat 内置的基本身份验证,而忘记为不同的用户授予不同的权限。当然,基本的 HTTP 身份验证通常是一个糟糕的主意,但服务器位于防火墙后面,无论如何都会阻止来自办公室外部的访问,所以它应该足够了。所以我添加了一些用户tomcat-users.xml
,然后打开web.xml
并添加了这个:
<security-role>
<role-name>manager</role-name>
</security-role>
<security-role>
<role-name>guvnor</role-name>
</security-role>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Guvnor web app</realm-name>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Whole Guvnor app</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name>
<role-name>guvnor</role-name>
</auth-constraint>
</security-constraint>
它需要一些试验和错误,但它似乎工作正常。访问网络应用程序带来了用户名/密码挑战,登录成功,一切看起来都很好。但是有一个大问题:KnowledgeAgent
在我的规则引擎实现中,当它试图下拉打包的规则时,它开始遇到 401 错误。当然,我将我正在使用的用户名和密码更改为ChangeSet.xml
有效的用户名和密码,但它仍然不起作用。
据我所知,当我使用 Tomcat 喜欢的用户名/密码时,Guvnor 会DemoAuthenticator
看着它们,注意到用户名和密码不一样,并拒绝访问。有一行beans.xml
似乎正在加载DemoAuthenticator
,但将其注释掉似乎没有任何作用。(我不知道为什么 Web 应用程序不会发生这种情况。)我想出的另一种可能性是,无论是设置basicAuthentication
,username
还是password
将用户名和密码添加到 URL 都不会以Tomcat 识别为基本 HTTP 身份验证的格式。我不确定如何区分。在这一点上,我不知道自己做错了什么,也不知道该怎么做才能弄清楚自己做错了什么。有人有建议吗?