使用configDropins覆盖application-bnd安全角色

时间:2018-12-17 15:10:59

标签: websphere-liberty open-liberty

我有一个基于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状态失败。

有人可以帮助我理解这种行为和/或提供其他方法吗?

1 个答案:

答案 0 :(得分:0)

在security-role元素中添加“ id”属性应该可以解决此问题。在您的示例中,配置处理后实际上有两个安全角色元素。安全运行时将根据名称将它们合并在一起,但是行为将根据接收到两个安全角色元素的顺序而有所不同。