我在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
,但是将其评论出来似乎没有做任何事情。 (我不知道为什么这不会发生在网络应用中。)我提出的另一种可能性是,既没有设置basicAuthentication
,username
和password
也没有将用户名和密码添加到URL是以Tomcat识别为基本HTTP身份验证的格式发送身份验证。我不确定如何区分它们。在这一点上,我不知道我做错了什么,我不知道如何弄清楚我做错了什么。有没有人有任何建议?