我有一个基于Websphere自由的应用程序的docker映像。默认情况下,此映像使用具有两个示例用户的basicRegistry的Basic Authentication。 然后将basicRegistry组绑定到一个安全角色,如下所示(并且此安全角色是从应用程序的web.xml中引用的):
<webApplication id="myWebapp" ...>
<application-bnd>
<security-role name="Users">
<group name="Users"/>
</security-role>
</application-bnd>
</webApplication>
现在,在我的环境中,身份验证将在此容器之外进行,因此我想禁用基本的身份验证检查,并向所有可以使用它的人开放。 我希望不重新打包整个server.xml,而是希望仅将一些配置添加到configDropins / override中,以禁用Webapp的身份验证。
尝试之后,我对它是否/如何工作感到困惑... 这是观察到的行为:
如果我首先启动服务器,则将配置片段添加到configDropins / override中,如下所示:
<webApplication id="myWebapp">
<application-bnd>
<security-role name="Users">
<special-subject type="EVERYONE"/>
</security-role>
</application-bnd>
</webApplication>
然后,Web应用将重新加载,并且基本身份验证已关闭(正常)。
但是,当我将相同的配置片段打包到configDropins / override中并然后启动服务器时,Web应用程序将在启用基本身份验证的情况下启动,并且所有请求均以HTTP 401状态失败。
有人可以帮助我理解这种行为和/或提供其他方法吗?
答案 0 :(得分:0)
在security-role元素中添加“ id”属性应该可以解决此问题。在您的示例中,配置处理后实际上有两个安全角色元素。安全运行时将根据名称将它们合并在一起,但是行为将根据接收到两个安全角色元素的顺序而有所不同。